сопоставлять повторяющиеся слова в строке, используя регулярное выражение в Python - PullRequest
1 голос
/ 30 апреля 2019

Я пытаюсь сопоставить повторяющиеся слова в строке

Я пробовал re.findall( r"(\b(\w+)\b)((?=.*)\1)+ , stringToCheck ), но безрезультатно.

Для такой строки, как "ball ball glass table ball glass chair", я хотел быизвлечь ball, ball, glass, ball, glass с помощью регулярных выражений.Может ли кто-нибудь помочь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Если вы не зациклены на использовании регулярных выражений, это можно легко сделать с помощью следующего кода (как указано в комментарии к вашему вопросу):

from collections import Counter

cnt = Counter()

example_string = "ball ball glass table ball glass chair"
word_list = example_string.split(" ")

for word in word_list:
  cnt[word] += 1

print(cnt)

Затем его можно отфильтровать, чтобы получить только тот, в котором число больше 1.

filtered = {k:v for (k,v) in cnt.items() if v > 1}
0 голосов
/ 30 апреля 2019

Вы можете решить эту проблему с помощью регулярных выражений и понимания списка следующим образом:

In [43]: s = "ball ball glass table ball glass chair"

In [68]: splitted = re.findall(r"\w+", s)

In [69]: [item for item in splitted if splitted.count(item) > 1]
Out[69]: ['ball', 'ball', 'glass', 'ball', 'glass']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...