如何存储正则表达式中关键术语的列表(或词典)? -蟒蛇

时间:2010-09-29 17:45:32

标签: python regex dictionary

我是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 个答案:

答案 0 :(得分:2)

我会使用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 :(得分:1)

我认为你想要re.findall。这当然也可以在编译的正则表达式中使用。您获得的特定错误代码似乎表明您是not matching your pattern。尝试

pattern = re.compile("bill", re.IGNORE_CASE)