Есть сотни из управляющих символов в Unicode. Если вы дезинфицируете данные из Интернета или какой-либо другой источник, который может содержать символы, отличные от ascii, вам понадобится unicodedata module Python. Функция unicodedata.category(…)
возвращает unicode category code (например, управляющий символ, пробел, букву и т. Д.) Любого символа. Для управляющих символов категория всегда начинается с «C».
Этот фрагмент удаляет все управляющие символы из строки.
import unicodedata
def remove_control_characters(s):
return "".join(ch for ch in s if unicodedata.category(ch)[0]!="C")
Примеры unicode categories:
>>> from unicodedata import category
>>> category('\r') # carriage return --> Cc : control character
'Cc'
>>> category('\0') # null character ---> Cc : control character
'Cc'
>>> category('\t') # tab --------------> Cc : control character
'Cc'
>>> category(' ') # space ------------> Zs : separator, space
'Zs'
>>> category(u'\u200A') # hair space -------> Zs : separator, space
'Zs'
>>> category(u'\u200b') # zero width space -> Cf : control character, formatting
'Cf'
>>> category('A') # letter "A" -------> Lu : letter, uppercase
'Lu'
>>> category(u'\u4e21') # 両 ---------------> Lo : letter, other
'Lo'
>>> category(',') # comma -----------> Po : punctuation
'Po'
>>>
Я бы предложил не использовать `map` в качестве имени переменной , – 2010-12-01 13:43:01
Обратите внимание, однако, что это ядерные новеллы. – mlissner 2011-05-20 07:40:57
Этот код не работает. Я продолжаю получать `TypeError: ожидается ошибка объекта символьного буфера. Python 2.6. – user1476056 2012-10-19 21:09:21