字符串/HTML的清理与剥离 - Python
我有一组问题,但我不知道答案。
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的关于协程的演讲。