Удаление непечатных символов из строки в Python - PullRequest
80 голосов
/ 18 сентября 2008

Я использую для запуска

$s =~ s/[^[:print:]]//g;

на Perl, чтобы избавиться от непечатных символов.

В Python нет классов регулярных выражений POSIX, и я не могу написать [: print:], имея в виду то, что я хочу. Я не знаю, как в Python определить, является ли символ печатным или нет.

Что бы вы сделали?

РЕДАКТИРОВАТЬ: он также должен поддерживать символы Unicode. Способ string.printable с радостью удалит их из вывода. curses.ascii.isprint вернет false для любого символа Юникода.

Ответы [ 11 ]

0 голосов
/ 11 сентября 2017

Чтобы удалить «пробел»,

import re
t = """
\n\t<p>&nbsp;</p>\n\t<p>&nbsp;</p>\n\t<p>&nbsp;</p>\n\t<p>&nbsp;</p>\n\t<p>
"""
pat = re.compile(r'[\t\n]')
print(pat.sub("", t))
...