我想从文本文件中的表中获取数据到python数组中。我用作输入的文本文件有7列31行。以下是前两行的示例:
10672 34.332875 5.360831 0.00004035881220 0.00000515052523 4.52E-07 6.5E-07
12709 40.837833 19.429158 0.00012010938453 -0.00000506426720 7.76E-06 2.9E-07
我尝试编写的代码无法正常工作,因为它不会在通过for循环时一次读取一行。
data = []
f = open('hyadeserr.txt', 'r')
while True:
eof = "no"
array = []
for i in range(7):
line = f.readline()
word = line.split()
if len(word) == 0:
eof = "yes"
else:
array.append(float(word[0]))
print array
if eof == "yes": break
data.append(array)
非常感谢任何帮助。
答案 0 :(得分:6)
具有空格分隔值的文件只是经典comma-separated values (CSV)文件的一种方言,其中分隔符是空格(),后跟更多空格,可以忽略。
令人高兴的是,Python附带了csv.reader
class
,了解dialect。
你应该用这个:
#!/usr/bin/env python
import csv
csv.register_dialect('ssv', delimiter=' ', skipinitialspace=True)
data = []
with open('hyadeserr.txt', 'r') as f:
reader = csv.reader(f, 'ssv')
for row in reader:
floats = [float(column) for column in row]
data.append(floats)
print data
答案 1 :(得分:2)
如果你不想在这里使用cvs,因为你真的不需要它:
data = []
with open("hyadeserr.txt") as file:
for line in file:
data.append([float(f) for f in line.strip().split()])
或者,如果您确定唯一的额外字符是空格和行结尾\n
,您可以将最后一行转换为:
data.append([float(f) for f in line[:-1].split()])