Подтвердить что ты не робот

Как удалить символы из строки с помощью Python?

Я начинаю как с Python, так и с RegEx, и я хотел бы знать, как сделать строку, которая принимает символы и заменяет их пробелами. Любая помощь велика.

Например:

how much for the maple syrup? $20.99? That ricidulous!!!

в

how much for the maple syrup 20 99 That s ridiculous
4b9b3361

Ответ 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().