正则表达式操作后无法读取文件(Python)

时间:2015-08-28 14:10:24

标签: python regex python-2.7 io

我在Python中尝试正则表达式操作。但是,一旦我使用它,我就无法再次读取该文件。

f = codecs.open(filename, 'rU', 'utf-8')
#print f.read() works here

#printing the year
year = re.search(r'Popularity in (\w+)',f.read())
print year.group(1)

#now, this returns nothing !
print f.read()

我无法理解我在这里做错了什么。

2 个答案:

答案 0 :(得分:1)

调用f.read()时,文件对象将遍历所有行,并且文件对象是生成器,它将记住它停止读取的位置。如果再次调用f.read()继续阅读,文件对象将继续读取它离开的位置,即文件末尾。通过调用f.seek(0),您将重置文件中的位置,然后您可以再次读取该文件。在您的情况下,将文件内容保存在变量中可能更有意义,可以多次访问它。

file_content = f.read()
year = re.search(r'Popularity in (\w+)', file_content)
print year.group(1)

print file_content

year = re.search(r'Popularity in (\w+)', f.read())
print year.group(1)

f.seek(0)  # reset the file read position
print f.read()

我会选择第一个选项。

答案 1 :(得分:0)

在第二次阅读之前添加f.seek(0)。一旦文件被完全引导,指针就会到达文件末尾。现在你必须向上移动指针(即文件启动)。为了做到这一点,我们必须添加fileobject.seek(0)