Обработка строки в Python с помощью регулярных выражений
Нужно оставить в строке только буквы a-Z, A-Z, цифры 0-9, заменить все двойные(и больше) пробелы на один. Пример
"Does not \operate 66.7 after & lt;# & gt; or what"-->
"Does not operate 66 7 after lt gt or what"
Как это сделать с помощью регулярных выражений?
Попробовал вот так
splits = re.split(r'^a-zA-Z0-9', message)
return " ".join(splits)
Но почему-то re.split не работает
Ответы (2 шт):
Автор решения: insolor
→ Ссылка
Диапазоны символов в регулярных выражениях нужно брать в квадратные скобки, также нужно добавить +, чтобы несколько подряд идущих символов из диапазона считались одним разделителем:
import re
message = "Does not \operate 66.7 after & lt;# & gt; or what"
splits = re.split(r'[^a-zA-Z0-9]+', message)
print(" ".join(splits))
Результат:
Does not operate 66 7 after lt gt or what
Аналогично через findall вместо split:
import re
message = "Does not \operate 66.7 after & lt;# & gt; or what"
splits = re.findall(r'[a-zA-Z0-9]+', message)
print(" ".join(splits))
Автор решения: Andy Pavlov
→ Ссылка
Можно сделать без join через двойную замену re.sub:
import re
text = "Does not \operate 66.7 after & lt;# & gt; or what"
print(re.sub('\s+', ' ', re.sub('[^\w\s]', ' ', text)))
#Does not operate 66 7 after lt gt or what