我需要读取格式如下的文件中的数据:
0.00000 62.12404 0.00000
1.95695 62.12288 0.00000
3.91389 62.11939 0.00000
5.87084 62.11357 0.00000
7.82779 62.10543 0.00000
9.78474 62.09496 0.00000
11.74168 62.08218 0.00000
13.69863 62.06707 0.00000
(生成数据的脚本将格式指定为“%9.5f”)。行数不固定,我希望最后有3xN数组或3个长度为N的数组。通常情况下,我会使用lines.split
,但如果数字之间的空格数不固定,则无法正常工作。
答案 0 :(得分:3)
您可以使用pandas.read_csv
方法(link to the documentation page)阅读该文件。
使用已经过广泛测试,记录和使用的现有模块应始终是考虑完成任何任务的第一个选项。
注意:您可以使用sep='\s+'
split
方法可以处理几个连续的空格。
如果未指定sep或为None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随,则结果将在开头或结尾处不包含空字符串空白。因此,将空字符串或仅由空格组成的字符串拆分为无分隔符将返回[]。
答案 1 :(得分:1)
with open("data.txt", "r") as data:
[line.split() for line in data]
我在python 2.7和python 3.5中测试过。它应该工作
答案 2 :(得分:1)
split应该在python 2和3中工作:
>>> str = ' 0.00000 62.12404 0.00000'
>>> print str.split()
['0.00000', '62.12404', '0.00000']
您也可以尝试使用正则表达式:
print re.split('\s{1,}', str.strip())
答案 3 :(得分:0)
data.txt包含您的数据
file_object = open("data.txt", "r")
mylist = list()
while True:
a = file_object.readline().split()
if a is None or len(a) == 0 or a is EOFError:
break
else:
mylist.append(a)
for a in mylist:
print(a)
此代码给出了
下面的结果['0.00000', '62.12404', '0.00000']
['1.95695', '62.12288', '0.00000']
['3.91389', '62.11939', '0.00000']
['5.87084', '62.11357', '0.00000']
['7.82779', '62.10543', '0.00000']
['9.78474', '62.09496', '0.00000']
['11.74168', '62.08218', '0.00000']
['13.69863', '62.06707', '0.00000']