Как мне сохранить список (или dict) ключевых терминов из регулярного выражения? -Python - PullRequest
2 голосов
/ 29 сентября 2010

Я новичок в python и regex, поэтому, пожалуйста, потерпите меня.Я пытаюсь прочитать файл, сопоставить определенное имя с помощью регулярных выражений, игнорируя регистр, и сохранить каждый раз, когда я его нахожу.Например, если файл состоит из Bill bill biLl biLL, мне нужно сохранить каждый вариант в словаре или списке.Текущий код:

import re
import sys
import fileinput
if __name__ == '__main__':
    print "flag"
    pattern = re.compile("""([b][i][l][l])""")
    for line in fileinput.input():
        variation=set(pattern.search(line, re.I))

    print variation.groupdict()
    print "flag2"

При запуске код выдаст ошибку: «NoneType» не может быть повторен (или что-то в этом духе).Так как мне сохранить каждый вариант?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 29 сентября 2010

Я бы использовал findall:

re.findall(r'bill', open(filename).read(), re.I)

Легко, как пирог:

>>> s = 'fooBiLL bill BILL bIlL foo bar'
>>> import re
>>> re.findall(r'bill', s, re.I)
['BiLL', 'bill', 'BILL', 'bIlL']
1 голос
/ 29 сентября 2010

Я думаю, что вы хотите re.findall .Это, конечно, доступно и для скомпилированного регулярного выражения.Хотя конкретный код ошибки, который вы получаете, может показывать, что вы не соответствует своему шаблону попробуйте

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