【发布时间】:2013-09-23 20:15:14
【问题描述】:
我需要比较两个不同文件的第一个元素在某个短语之后。到目前为止,我有这个:
import re
data1 = ""
data2 = ""
first = re.match(r".*Ignore until after this:(?P<data1>.*)", firstlist[0])
second = re.match(r".*Ignore until after this:(?P<data2>.*)", secondarray[0])
data1 = first.group('data1')
data2 = second.group('data2')
if data1 == data2:
#rest of the code...
我想在某个点之前忽略所有内容,然后将其余部分保存到变量中。我在脚本的前面做了一些几乎相同的事情,它可以工作。但是,当我运行它时,我得到了这个错误:
File "myfile.py", line [whatever line it is], in <module>
data1 = first.group('data1')
AttributeError: 'NoneType' object has no attribute 'group'
为什么re.match 不能与 first 和 second 一起正常工作?
编辑
根据建议,我已将[\s\S]* 更改为.*。
编辑 2:这是输入的样子(不像下面的评论):
Random text
More random text
Even more random text
Ignore until after this:
Meaningful text, keep this
...and everything else...
...until the end of the file here
基本上就是这样:在某一点之后需要保存的一串文本
【问题讨论】:
-
你为什么使用
[\s\S]*?由于\S是\s的倒数,所以您也可以使用.*并完成它(使用re.DOTALL)。 -
我也尝试过这种方法并得到了同样的错误,\s\S 只是有点抓住稻草,试图改变任何可能导致问题的东西,只是忘记了切换回来
-
然后我们需要查看输入样本。您不需要“声明”
data1和data2,顺便说一句。 -
这没有足够的信息让我们重现您的问题,更不用说帮助您了。
-
对不起,我的电脑太笨了,不让我用正确的格式编辑评论,我将在问题中添加输入示例