我是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'无法迭代(或沿着这些行的某些内容)。 那么如何存储每个变体?
提前致谢!
答案 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)