我有一个问题。我试图从文本文件中的两个子串之间获取某个字符串。
文本文件较大,但其中一部分包含:
r \ n [url = asitename] [/ url] \ r \ n [url = x] hello [/ url] \ r \ n [url = x]一个文本[/ url] \ r \ n [url = n]测试[/ url] \ r \ n \ t \ t \ t \ r \ n \ t \ t \ r \ n \ t \ tw \ n用户\ r \ n \ t \ r \ n \ n \ t2 \ r \ n \ t02-06-2017,01:44 am由cinccino。 end:modcp_reports_report - >
现在,我对' asitename'之间的文字感兴趣。并且'结束:'
我想在这些字符串之间获取文本。
我试过这个:
lookup = 'asitename'
myFileread = myFile.read()
re.search(lookup+'(.*)end', myFileread).group(1)
但是,它会返回以下错误:
AttributeError:' NoneType'对象没有属性' group'
我很困惑为什么这不起作用。它适用于更简单的字符串。
答案 0 :(得分:1)
使用re.S
标志,这将使.
与新行字符匹配:
>>> re.search(r'asitename(.*?)end', myFileread, re.S).group(1)
'][/url]\r\n[url=x]hello[/url]\r\n[url=x]a text[/url]\r\n[url=n]test[/url]\r\n\ttest\n\r\n\t\t\r\n\t\twarn user\r\n\t\r\n\t2\r\n\t02-06-2017, 01:44 am\nby cinccino.
答案 1 :(得分:0)
如果字符串中没有位置与模式匹配,则返回None;请注意,这与在字符串中的某个点找到零长度匹配不同。
似乎.search()返回None。根据python api,这意味着没有与模式匹配的位置。