我有一个文本文件。该文件的每行有6个字段或7个字段。你知道吗
如果一行中有7个字段,我将前6个字段作为键,第7个字段作为该键的值。
如果一行中有6个字段,我将前5个字段作为键,第6个字段作为该键的值。
我不知道是否张贴整个代码是必要的或没有,但为了一个清晰的画面,我张贴整个代码。你知道吗
我的代码粘贴在下面:
ReqResRS = {}
with contextlib.nested(open(sys.argv[1],'r'), open(sys.argv[2], 'w')) as (inpf, outf):
lines = [l.split() for l in inpf if l.strip()]
for l in lines:
if(l[6]):
myKey = (l[0],l[1],l[2],l[3],l[4],l[5])
myValue = l[6]
if(myKey in ReqResRS):
diff = float(l[6])-float(ReqResRS[myKey]);
if(float(diff) < 0.000008):
ReqResRS[myKey] = myValue
else:
ReqResRS[myKey] = myValue
outf.write(l[0] + "\t" + l[1] + "\t" + l[2] + "\t" + l[3] + "\t" + l[4] + "\t" + l[5] + "\t" + l[6] + "\n")
else:
ReqResRS[myKey] = myValue
outf.write(l[0] + "\t" + l[1] + "\t" + l[2] + "\t" + l[3] + "\t" + l[4] + "\t" + l[5] + "\t" + l[6] + "\n")
else:
myKey = (l[0],l[1],l[2],l[3],l[4])
myValue = l[5]
if(myKey in ReqResRS):
diff = float(l[5])-float(ReqResRS[myKey]);
if(float(diff) < 0.000008):
ReqResRS[myKey] = myValue
else:
ReqResRS[myKey] = myValue
outf.write(l[0] + "\t" + l[1] + "\t" + l[2] + "\t" + l[3] + "\t" + l[4] + "\t" + l[5] + "\n")
else:
ReqResRS[myKey] = myValue
outf.write(l[0] + "\t" + l[1] + "\t" + l[2] + "\t" + l[3] + "\t" + l[4] + "\t" + l[5] + "\n")
我想
if(l[6]):
应该是第5行的if(len(l) == 7):
请注意,您还可以编写以下内容
如果数组太短,则失败。 访问不属于数组的值总是会导致异常。因此,您应该事先检查数组是否足够长,如下所示:
我想你想把
if l[6]
改成if len(l) == 7
但是这类事情应该比你做的更简单(从上面的代码来看,你应该需要根据你的数据文件有多少列来做一些特殊的事情):
相关问题 更多 >
编程相关推荐