Как подсчитать вхождения слова, следующего за специальным символом в тексте, используя регулярное выражение python - PullRequest
0 голосов
/ 23 октября 2018

Я хочу посчитать количество вхождений слова «люди» в текст, используя python.Для этого я использую регулярное выражение Counter и Python:

    for j in range(len(paragraphs)):
        text = paragraphs[j].text
        count[j] = Counter(re.findall(r'\bpeople\b' ,text))

Тем не менее, здесь мой код не учитывает происшествия людей.люди!люди?Как я могу изменить его, чтобы он также подсчитывал случаи, когда за словом следует определенный символ?

Спасибо за помощь,

Ответы [ 4 ]

0 голосов
/ 23 октября 2018

Нужно ли использовать регулярное выражение?Почему бы просто:

len(text.split("people"))-1
0 голосов
/ 23 октября 2018
people[?.!]

Это позволит вам совпадать только с людьми?люди.и / или люди!

Так что, если вы добавите еще несколько Counter(re.finall(, вы сможете сделать что-то вроде этого

#This will only match people
count[j] = Counter(re.findall(r'people\s' ,text))

#This will only match people?
count[j] = Counter(re.findall(r'people\?' ,text))

#This will only match people.
count[j] = Counter(re.findall(r'people\.' ,text))

#This will only match people!
count[j] = Counter(re.findall(r'people\!' ,text))

Вам нужно использовать \, чтобы избежатьспециальные символы

Также это хороший ресурс, когда вы экспериментируете с регулярными выражениями python: https://pythex.org/ На сайте также есть шпаргалка регулярных выражений

0 голосов
/ 23 октября 2018

Вы можете использовать оператор-модификатор в конце части 'people' вашего шаблона Regex.Попробуйте следующее:

for j in range(len(paragraphs)):
    text = paragraphs[j].text
    count[j] = Counter(re.findall('r\bpeople[.?!]?\b', text)

The?для нуля или более квантификатор.Вышеприведенный шаблон работает на regex101.com, но я еще не пробовал использовать оболочку Python.

0 голосов
/ 23 октября 2018

Вы можете использовать необязательную группу символов в своем регулярном выражении:

r'\bpeople[.,!?]?\b'

The?указывает, что это может произойти 0 или 1 раз - [] указывает, какие символы разрешены.Нет необходимости избегать . (или fe ()*+?) внутри [], хотя они имеют особое значение для регулярных выражений.Если вы хотите использовать - внутри [], вам необходимо его избежать, поскольку он используется для обозначения диапазонов в наборах [1-5] == 12345.

См .: https://docs.python.org/3/library/re.html#regular-expression-syntax

[] Используется для обозначения набора символов.В наборе:

Символы могут быть перечислены по отдельности, например, [amk] будет соответствовать 'a', 'm' или 'k'.Диапазоны символов можно указать, указав два символа и разделив их символом «-», например, [az] будет соответствовать любой строчной букве ASCII, [0-5] [0-9] будет соответствовать всем двузначным числам изОт 00 до 59, и [0-9A-Fa-f] будет соответствовать любой шестнадцатеричной цифре.[...]

...