В юникоде есть сотни контрольных символов. Если вы выполняете очистку данных из Интернета или из другого источника, который может содержать символы, отличные от ascii, вам потребуется модуль уникального Python . Функция unicodedata.category(…)
возвращает код категории Unicode (например, управляющий символ, пробел, буква и т. Д.) Любого символа. Для управляющих символов категория всегда начинается с "C".
Этот фрагмент удаляет все управляющие символы из строки.
import unicodedata
def remove_control_characters(s):
return "".join(ch for ch in s if unicodedata.category(ch)[0]!="C")
Примеры категорий юникода :
>>> 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'
>>>