Очистка и удаление строк / HTML - Python - PullRequest
0 голосов
/ 29 октября 2010

У меня есть набор вопросов, на которые у меня нет ответа.

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 и divs

3) Обработка Unicode ...

что бы вы порекомендовали для работы с Unicode, проанализированным в документах?


Есть идеи?:) Спасибо, ребята!

Ответы [ 6 ]

2 голосов
/ 29 октября 2010

Для очистки HTML используйте lxml.html

import lxml.html
text = lxml.html.fromstring("...")
text.text_content()
2 голосов
/ 29 октября 2010

Для первого вы можете использовать split, а затем понимание списка, чтобы обрезать лишние пробелы:

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

И удалить пустые строки из списка:

result = [x for x in result if x]
1 голос
/ 29 октября 2010

Я склонен писать несколько каскадных генераторов, особенно если я хочу, чтобы какой-то вывод был частью теста:

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

Вдохновение - презентация Бизли о сопрограммах .

1 голос
/ 29 октября 2010

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

2) чек приборка

1 голос
/ 29 октября 2010

1) Вы можете использовать метод полосы

2) вы можете использовать sanitize, http://wonko.com/post/sanitize

3) некоторые советы по юникоду здесь: http://blog.trydionel.com/2010/03/23/some-unicode-tips-for-ruby/

1 голос
/ 29 октября 2010

Я новичок в веб-разработке на python, но для очистки / очистки html я обнаружил, что библиотека markdown2 обладает некоторыми очень приятными функциями. Вы можете использовать его с MarkItUp! редактором на основе jQuery. Они могут не решить все ваши проблемы, но могут помочь вам выполнить большую работу за короткое время.

...