逐行读取文件并在python中搜索模式

时间:2019-01-03 00:06:58

标签: python regex search readline getline

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

我有一个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语句之前它会打印空白行。

我希望能对其中任何一种方法提供帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

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