Я пытаюсь заменить все не буквы и не пробелы на ''. Я думал, что приведенный ниже код работает нормально в ряде тестовых случаев, однако он не работает, если речь идет о специальных, экранированных символах.
import re
def process_text(text):
text = text.lower()
text = re.sub(pattern='[^A-z ^\s]',repl='',string=text).split(' ')
return [word for word in text if word != '']
process_text('abc 123')
>>>> ['abc'] # this is what I wanted.
process_text('abc 123 \n')
>>>> ['abc', '\n'] # I don't want the new line character.
Приведенная ниже ссылка информировала меня о том, что \ s - это любой пробел. https://www.debuggex.com/cheatsheet/regex/python
Однако в официальной документации говорится, что \ s эквивалентно «Соответствует любому символу пробела; это эквивалентно [\ t \ n \ r \ f \ v]». https://docs.python.org/3/howto/regex.html
Итак, теперь я вижу, что в моем коде написано ~ найдите что-нибудь, что не является буквой и отсутствует в указанном выше наборе специальных символов, и замените его на ''.
Так же естьспособ сохранить пробел, но удалить другие специальные символы?