【发布时间】:2019-01-03 00:06:58
【问题描述】:
我正在逐行读取文件并存储信息,但有些行略有不同,需要整理一下。
我有一个 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 语句之前会打印一个空行。
我将不胜感激任何一种方法的帮助。
谢谢。
【问题讨论】:
-
如果您正在寻找像
itemB这样简单的东西,您不妨使用if "itemB" in l:而不是使用正则表达式 -
在第一个代码变体中,您应该首先确定最后一行中的
print是否真的没有打印任何内容(这对我来说似乎不可能)或者该行根本没有执行,因为if条件始终为假。
标签: python regex search readline getline