Skip to main content
 首页 » 编程设计

python之两个正则表达式函数一起不起作用

2024年08月27日21cloudgamer

我正在尝试获取标签开头和另一个标签结尾的索引。但是,当我使用一个正则表达式时,它工作得很好,但对于两个正则表达式函数,它会为第二个函数提供错误。 请帮忙解释原因

下面的代码工作正常:

import re 
f = open('C:/Users/Jyoti/Desktop/PythonPrograms/try.xml','r') 
opentag = re.search('<TEXT>',f.read()) 
begin = opentag.start()+6 
print begin 

但是当我添加另一个类似的正则表达式时,它给了我错误

AttributeError: 'NoneType' object has no attribute 'start' 

据我所知,这是由于 start() 函数返回 None

代码如下:

import re 
f = open('C:/Users/Jyoti/Desktop/PythonPrograms/try.xml','r') 
opentag = re.search('<TEXT>',f.read()) 
begin = opentag.start()+6 
print begin 
 
closetag = re.search('</TEXT>',f.read()) 
end = closetag.start() - 1 
print end 

请提供一个解决方案,告诉我如何让它工作。另外我是这里的新手所以如果我问更多关于解决方案的问题请不要介意。

请您参考如下方法:

您正在阅读 f.read() 中的文件它读取整个文件,因此文件描述符向前移动,这意味着当您下次执行 f.read() 时无法再次读取文本。

如果您需要再次搜索相同的文本,请保存 f.read() 的输出,然后对其进行正则表达式搜索,如下所示:

import re 
f = open('C:/Users/Jyoti/Desktop/PythonPrograms/try.xml','r') 
 
text = f.read() 
 
opentag = re.search('<TEXT>',text) 
begin = opentag.start()+6 
print begin 
 
closetag = re.search('</TEXT>',text) 
end = closetag.start() - 1 
print end