首页 > 解决方案 > 逐行读取文件并在python中搜索模式

问题描述

我正在逐行读取文件并存储信息,但有些行略有不同,需要整理一下。

我有一个包含 502 行的文本文件,它类似于

VV item1 value1 item2 value2 itemA valA
VV item1 value1 item2 value2 itemB valB
...

我通过逐行读取文本来存储这些值,但各行之间存在差异。有时我有 itemB 而不是 itemA。我第一次尝试

ifn = open(afile,'r')
while 1:                                                                                                                                                                                                                                                                       
    l = ifn.readline() 
    print(int(l.split(' ')[1])) #prints value1 as expected
    if re.search('itemB', l):
            print(int(l.split(' ')[6]))

最后一条 print 语句不打印任何东西,尽管它假设并完全忽略了它。

然后我也试过

ifn = open(afile,'r')
for i,l in enumerate(ifn):                                                                                                                                                                                                                                                           
        print( linecache.getline(ifn.name,i).split(' ')[1]) )

但它在执行 re.search 语句之前会打印一个空行。

我将不胜感激任何一种方法的帮助。

谢谢。

标签: pythonregexsearchreadlinegetline

解决方案


我怀疑是您的 while 循环 + readline() 导致了问题。如果您使用上下文管理器和 for 循环,此代码应该可以工作:

with open('test.txt','r') as file:                                                                                                                                                                                                                                             
    for line in file:
        if 'itemB' in line:
            print(line.split(' ')[5])

此外,您似乎正在尝试访问该行中的第 6 项 - 这意味着您需要使用索引 5


推荐阅读