Шаблон регулярного выражения для использования с findall (), чтобы найти 3-буквенные слова - PullRequest
1 голос
/ 31 марта 2019

Итак, у меня есть некоторый код, который дает правильный результат, но код слишком конкретен. Я хочу, чтобы оно было более общим, чтобы я мог использовать re.findall () для извлечения всех трехбуквенных слов из 's2' (например, DOG).

В приведенном ниже коде проблема заключается в том, что я выбираю три слова, которые представляют собой трехбуквенные слова, когда я печатаю m [0: 3]. Другими словами, код, который у меня есть, ищет слова с 3+ буквами, и мне нужно черри, а я просто хочу слова из 3 букв - ни больше, ни меньше с самого начала.

list2 = 'A, k: it; hi! map@ LAP# rAp, home: LIFE; party! animals@'
m = re.findall(r'(\w{3,})', list2) 
m[0:3]

Я хочу получить ['map', 'lap', 'rAP']. И я хочу, чтобы код имел возможность сохранять любые другие 3, не больше, не меньше, буквенные слова в будущем.

1 Ответ

1 голос
/ 31 марта 2019

Вы можете искать ровно три символа слова, окруженные границами слов:

import re

s2 = 'I, a: be; go! cat@ DOG# aRe, home: WORK; ninja! rules@'
m = re.findall(r'\b\w{3}\b', s2) 
print(m)
# ['cat', 'DOG', 'aRe']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...