清理和剥离字符串/ HTML - Python

时间:2010-10-28 21:32:53

标签: python html string unicode sanitization

我有一系列问题,其中我没有答案。

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

保留基本标签,例如强,p,br,......

删除恶意javascript,css和div

3) Unicode处理......

您建议如何处理在文档中解析的unicode?


有什么想法吗? :)谢谢你们!

6 个答案:

答案 0 :(得分:2)

对于第一个,你可以使用split而不是列表理解来修剪额外的空格:

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

并从列表中删除空字符串:

result = [x for x in result if x]

答案 1 :(得分:2)

要清除HTML,请使用lxml.html

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

答案 2 :(得分:1)

我在python web开发方面有点初学者,但是为了清理/清理html,我发现markdown2库有一些非常好的功能。您可以将它与MarkItUp!基于jQuery的编辑器一起使用。它们可能无法解决您的所有问题,但可能会帮助您在短时间内完成大量工作。

答案 3 :(得分:1)

1)您可以使用条带方法

2)您可以使用清理,http://wonko.com/post/sanitize

3)这里有一些unicode提示:http://blog.trydionel.com/2010/03/23/some-unicode-tips-for-ruby/

答案 4 :(得分:1)

1)[j.strip() for j in a.split(',') if j.strip()]

2)检查tidy

答案 5 :(得分:1)

我倾向于编写多个级联生成器,特别是如果我想将某些输出作为测试的一部分:

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

灵感来自Beazley的presentation on coroutines