字符串/HTML的清理与剥离 - Python

0 投票
6 回答
1723 浏览
提问于 2025-04-16 06:15

我有一组问题,但我不知道答案。

1) 处理字符串列表

input:
'item1,   item2, \t\t\t item3, \n\n\n \t, item4, , , item5, '

output:
['item1', 'item2', 'item3', 'item4', 'item5']

有没有比下面的方法更有效的?

[x.strip() for x in l.split(',') if x.strip()]

2) 清理/净化HTML

保留基本标签,比如strong、p、br等...

去除恶意的javascript、css和div标签

3) Unicode处理...

你会推荐什么方法来处理文档中的Unicode?


有什么想法吗? :) 谢谢大家!

6 个回答

2

要清理HTML代码,可以使用lxml.html这个工具。

import lxml.html
text = lxml.html.fromstring("...")
text.text_content()
2

对于第一个问题,你可以先用分割功能(split)把内容分开,然后用列表推导式来去掉多余的空格:

result = [x.strip() for x in i.split(',')]

接着,如果你想把列表中空的字符串去掉,可以这样做:

result = [x for x in result if x]
1

我通常会写多个层层递进的生成器,特别是当我想让某些输出成为测试的一部分时:

stripped_iter = (x.strip() for x in l.split(','))
non_empty_iter = (x for x in stripped_iter if x)

这个想法来源于Beazley的关于协程的演讲

撰写回答