如何存储正则表达式中的关键字列表(或字典)? -Python

2 投票
2 回答
1085 浏览
提问于 2025-04-16 04:45

我刚开始学习Python和正则表达式,所以请多多包涵。

我想读取一个文件,使用正则表达式匹配一个特定的名字,并且不区分大小写,每次找到这个名字时都要存储下来。比如,如果文件里有 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 个回答

1

我觉得你想要使用 re.findall。这个功能当然也可以在编译后的正则表达式上使用。不过,你遇到的这个错误代码,似乎说明你 没有匹配到你的模式。你可以试试

pattern = re.compile("bill", re.IGNORE_CASE)
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']

撰写回答