Python: разделите все, кроме пробелов и буквенно-цифровых
У меня есть большая строка с скобками и запятыми и т.д. Я хочу снять все эти символы, но сохранить интервал. Как я могу это сделать. На данный момент я использую
strippedList = re.sub(r'\W+', '', origList)
Ответ 1
re.sub(r'([^\s\w]|_)+', '', origList)
Ответ 2
Версии на основе регулярных выражений могут быть быстрее (особенно если вы переключитесь на использование скомпилированного выражения), но мне это необходимо для ясности:
"".join([c for c in origList if c in string.letters or c in string.whitespace])
Это немного странно с вызовом join(), но я думаю, что это довольно идиоматический Python для преобразования списка символов в строку.
Ответ 3
Быстрая реализация:
import re
pattern = re.compile('([^\s\w]|_)+')
strippedList = pattern.sub('', value)
Ответ 4
Демонстрация того, какие символы вы получите в результате:
>>> s = ''.join(chr(i) for i in range(256)) # all possible bytes
>>> re.sub(r'[^\s\w_]+','',s) # What will remain
'\t\n\x0b\x0c\r 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz'