我的输入数据input.dat
如下所示:
0.00 0.00
0.00 0.00
0.00 0.00
-0.28 1.39
-0.49 1.24
-0.57 1.65
-0.61 2.11
-0.90 1.73
-0.87 2.29
我有一个表示行号的列表如下:
linenum = [7, 2, 6]
我需要将文件output_veloc_max.dat
写入input.dat
中与linenum
值相对应的行。{/ p>
结果应如下所示:
-0.61 2.11
0.00 0.00
-0.57 1.65
我写了以下代码:
linenum=[7,2,6]
i=1
with open('inputv.dat', 'r') as f5, open('output_veloc_max.dat', 'w') as out:
for line1 in f5:
if i in linenum:
print(line1, end=' ', file=out)
print(i,line1)
i+=1
但是,它给我的输出看起来像这样:
2 0.00 0.00
6 -0.57 1.65
7 -0.61 2.11
我做错了什么?
答案 0 :(得分:1)
在字典d
中存储您遇到的值,其中的键表示行号和包含行内容的值。根据{{1}}的顺序,使用writelines
将其写入文件。使用linenum
获取每行的行号,而不是像enumerate(fileobj, 1)
这样的显式计数器:
i
当然,您可以通过字典理解进一步减少这一点:
linenum=[7,2,6]
d = {}
with open('inputv.dat', 'r') as f5, open('output_veloc_max.dat', 'w') as out:
for num, line1 in enumerate(f5, 1):
if num in linenum:
d[num] = line1
out.writelines([d[i] for i in linenum])