Как удалить символы из строки с помощью Python?
Я начинаю как с Python, так и с RegEx, и я хотел бы знать, как сделать строку, которая принимает символы и заменяет их пробелами. Любая помощь велика.
Например:
how much for the maple syrup? $20.99? That ricidulous!!!
в
how much for the maple syrup 20 99 That s ridiculous
Ответы
Ответ 1
В одном случае, используя регулярные выражения:
>>> s = "how much for the maple syrup? $20.99? That ridiculous!!!"
>>> re.sub(r'[^\w]', ' ', s)
'how much for the maple syrup 20 99 That s ridiculous '
-
\w
будет соответствовать буквенно-цифровым символам и символам подчеркивания
-
[^\w]
будет соответствовать любому, что не буквенно-цифровое или подчеркивание
Ответ 2
Иногда требуется больше времени, чтобы выяснить регулярное выражение, чем просто написать его на python:
import string
s = "how much for the maple syrup? $20.99? That ricidulous!!!"
for char in string.punctuation:
s = s.replace(char, ' ')
Если вам нужны другие символы, вы можете изменить его, чтобы использовать белый список или расширить свой черный список.
Образец белого списка:
whitelist = string.letters + string.digits + ' '
new_s = ''
for char in s:
if char in whitelist:
new_s += char
else:
new_s += ' '
Пример белого списка с использованием выражения-генератора:
whitelist = string.letters + string.digits + ' '
new_s = ''.join(c for c in s if c in whitelist)
Ответ 3
Я часто открываю консоль и ищу решение в методах объектов. Довольно часто это уже есть:
>>> a = "hello ' s"
>>> dir(a)
[ (....) 'partition', 'replace' (....)]
>>> a.replace("'", " ")
'hello s'
Короткий ответ: используйте string.replace()
.