Удаление всего, кроме букв и пробелов из строки в Python3.3

Вопрос: У меня есть пример строки: happy t00 go 129.129 и я хочу сохранить только пробелы и буквы. Все, что мне удалось довести до сих пор, это довольно эффективно: print(re.sub("d", "", 'happy t00 go 129.129'.replace('.', ''))) но это относится только к моей примерной строке. Как удалить все символы, кроме букв и пробелов? Лучший ответ: whitelist

Вопрос:

У меня есть пример строки: happy t00 go 129.129 и я хочу сохранить только пробелы и буквы. Все, что мне удалось довести до сих пор, это довольно эффективно:

print(re.sub(«d», «», ‘happy t00 go 129.129’.replace(‘.’, »)))

но это относится только к моей примерной строке. Как удалить все символы, кроме букв и пробелов?

Лучший ответ:whitelist = set(‘abcdefghijklmnopqrstuvwxy ABCDEFGHIJKLMNOPQRSTUVWXYZ’) myStr = «happy t00 go 129.129″ answer = ».join(filter(whitelist.__contains__, myStr))

Вывод:

>>> answer ‘happy t go ‘ Ответ №1

Используйте набор дополнений:

re.sub(r'[^a-zA-Z ]+’, », ‘happy t00 go 129.129’) Ответ №2

Небольшое изменение метода inspectorG4dget – импорт из понимания string и генератора:

from string import ascii_letters allowed = set(ascii_letters + ‘ ‘) myStr = ‘happy t00 go 129.129’ answer = ».join(l for l in myStr if l in allowed) answer # >>> ‘happy t go ‘

Сравнение производительности:

(Я сделал myStr немного дольше и предварительно скомпилировал регулярное выражение, чтобы сделать вещи немного интереснее)

import re from string import ascii_letters, digits myStr = ‘happy t00 go 129.129’*20 allowed = set(ascii_letters + ‘ ‘) # Generator %timeit answer = ».join(l for l in myStr if l in allowed) # filter/__contains__ %timeit answer = ».join(filter(allowed.__contains__, myStr)) # Regex pat = re.compile(r'[^a-zA-Z ]+’) %timeit answer = re.sub(pat, », myStr)

53 мкс ± 6,43 мкс на петлю (среднее ± стандартное отклонение 7 прогонов, 10000 циклов)
43,3 мкс ± 7,48 мкс на петлю (среднее ± стандартное отклонение 7 прогонов, 10000 циклов)
26 мкс ± 509 нс на петлю (среднее ± стандартное отклонение 7 прогонов, 10000 циклов)

Оцените статью
Добавить комментарий