Подсчитайте количество вхождений «NZ» и «O» в текстовом файле. - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь сопоставить и посчитать количество вхождений NZ и O в текстовом файле ...

Import re 
pattern = re.compile(r'NZ')
with open ('scratch_1.txt','r') as f:
    contents = f.read()
    matches = pattern.finditer(contents)
for match in matches:
    print(match)

Выше приведен мой текущий код, и он соответствует всем «NZ».То, к чему я пытаюсь добраться - это сопоставить все «NZ» и «O» и подсчитать количество появлений.Пожалуйста, помогите!

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Я думаю, что это проще сделать:

n1 = contents.count('NZ')
n2 = contents.count('O')
result = n1+n2

Если вы действительно хотите регулярное выражение, я думаю, что шаблон NZ|O должен работать.

0 голосов
/ 11 декабря 2018

Используйте группу без захвата с чередованием (|, символ канала) между NZ и O.И я бы использовал re.findall, завернутый в len, поскольку re.findall возвращает list вхождений.

>>> import re
>>> text = 'HellO world! NZO NZ O NZ NZNZNZN O'
>>> len(re.findall(r'(?:NZ|O)', text))
10

Протестировано здесь: https://regexr.com/44ms6

0 голосов
/ 11 декабря 2018

Просто измените шаблон, чтобы найти NZ или O:

pattern = re.compile(r'NZ|O')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...