【发布时间】:2019-01-17 13:09:49
【问题描述】:
我有一个来自 Linux 程序的奇怪文件;例如第一行是:
1 1011.720000 1830.340000 0 0 0 191340 ? 1.000000
2 1011.720000 1830.340000 0 0 0 725670 ? 2.000000
3 1011.720000 1830.340000 0 0 0 1.4378e+06 ? 3.000000
4 1011.720000 1830.340000 0 0 0 2.178e+06 ? 4.000000
5 1011.720000 1830.340000 0 0 0 2.8806e+06 ? 5.000000
6 1011.720000 1830.340000 0 0 0 3.5353e+06 ? 6.000000
7 1011.720000 1830.340000 0 0 0 4.1598e+06 ? 7.000000
8 1011.720000 1830.340000 0 0 0 4.7729e+06 ? 8.000000
9 1011.720000 1830.340000 0 0 0 5.3924e+06 ? 9.000000
10 1011.720000 1830.340000 0 0 0 6.0281e+06 ? 10.000000
我只需要从每一行中提取两个值:
191340
725670
1.4378e+06
2.178e+06
.... etc
1.00000
2.00000
3.00000
4.00000
.... etc
这段代码:
import csv
with open('NGC1365GaiaPhotomLogTestTenLines.dat', "rb") as infile:
read = csv.reader(infile)
for row in read :
print (row)
生成:
[' 1 1011.720000 1830.340000 0 0 0 191340 ? 1.000000']
[' 2 1011.720000 1830.340000 0 0 0 725670 ? 2.000000']
[' 3 1011.720000 1830.340000 0 0 0 1.4378e+06 ? 3.000000']
[' 4 1011.720000 1830.340000 0 0 0 2.178e+06 ? 4.000000']
[' 5 1011.720000 1830.340000 0 0 0 2.8806e+06 ? 5.000000']
[' 6 1011.720000 1830.340000 0 0 0 3.5353e+06 ? 6.000000']
[' 7 1011.720000 1830.340000 0 0 0 4.1598e+06 ? 7.000000']
[' 8 1011.720000 1830.340000 0 0 0 4.7729e+06 ? 8.000000']
[' 9 1011.720000 1830.340000 0 0 0 5.3924e+06 ? 9.000000']
[' 10 1011.720000 1830.340000 0 0 0 6.0281e+06 ? 10.000000']
问题是生成的列表不是用逗号分隔的好项目 - 输入文件中的项目由空格分隔,并且空格的数量可能会有所不同,因为第一列中值的格式也可能会有所不同。
虽然我不会很难,但我已经咨询了很多线程,但一无所获。
【问题讨论】:
-
只需
line.split()。注意csv.reader在这种情况下是多余的。