Python:一行一行地阅读,找到正则表达式和组内工作
问题描述:
所以我有一个纯文本文件,我想用Python来找到所有的正则表达式,并与所有的结果列表。Python:一行一行地阅读,找到正则表达式和组内工作
这是我试图与交互式控制台:
>>> import re
>>> result = []
>>> file = open('guion.fountain')
>>> for line in file:
... m = re.search("\[\[Prop\]\]\*(.*)\*", line)
... result.append(m.group(1))
...
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
但我没有运气。它说m
变量是NotType
而不是正则表达式搜索的结果。
我在做什么错?
答
试图逐行读取文件中的行,使用with
,并打开阅读:
with open('guion.fountain', 'r') as file:
result = []
for line in file:
m = re.search("\[\[Prop\]\]\*(.*)\*", line)
result.append(m.group(1))
....
答
如果re.search
未能找到匹配,则返回None
。因此,在访问m.group(1)
之前,先检查if m:
是个好主意。
另外,由于您的匹配跨越多行,您很可能需要将整个文件读入内存。只需在编译正则表达式时将.*
替换为.*?
并使用re.DOTALL
修饰符,以便.
可以匹配换行符号。
在访问'.group(1)'前检查'if m:'。另外,你可能需要用'。*?'替换'。*'。如果预期的匹配跨越多行,请读取内存中的整个文件,然后使用're.DOTALL'修饰符。 –
你能分享你的文件的内容或几行吗? –
你有没有尝试过一个更简单的正则表达式,看看是否是这个问题? – klutt