Как убрать все кроме 26 букв и., () '"?! из строки в Python? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть:

string = 'Here it is, your gif! am a bot. [^(Report an issue)] ❤ that bot,I ❤ ur mom **YEET** ? ,GOTTEM!"'

, и я пытаюсь:

string = re.sub(r'\W+', ' ', string)

, и это дает мне:

'Here it is your gif am a bot Report an issue that bot I ur mom YEET GOTTEM'  

Но я бы хотел это:

'Here it is, your gif! am a bot. (Report an issue) that bot,I ur mom YEET ,GOTTEM!"'

Всего 26 букв, без цифр и только наиболее часто используемые символы в этой группе: .,()'"?!

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Используйте это вместо своего регулярного выражения: [^a-zA-Z?!.,()\'" ]+

Браслеты определяют коллекцию элементов, которые вы хотите выбрать, каретка спереди определяет отрицание того, что внутри.

Таким образом, оставляя вас с

pattern = r'[^a-zA-Z?!.,()\'" ]+'
string = re.sub(pattern, ' ', string)
0 голосов
/ 08 февраля 2019

Создайте класс символов из вещей, которые вы принимаете (с помощью []), и инвертируйте его (с помощью ведущего ^, сделав его [^stuff]):

string = re.sub(r'[^a-zA-Z.,()\'"?! ]+', '', string)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...