我有一个看起来像这样的文件格式
0.1
0.02 0.03 0.04
0.05 0.06 0.07
0.08 0.09 0.10
0.2
0.11 0.12 0.13
0.14 0.15 0.16
0.17 0.18 0.19
0.3 ... ...
我想将此文件解析为数组,如下所示 -
0.02 0.11 ...
0.03 0.12 ...
0.04 0.13 ...
0.05 0.14 ...
0.06 0.15 ...
0.07 0.16 ...
...
这里我已经确定genfromtxt,loadtxt因为带有单列的中间行而无法工作。我不知道可能有更多的数据块,我不知道有多少数据直到文件结束。我现在手动将单个条目输入到数组中。有更快的方法吗?我正在寻找解析大文件和其中许多文件。
答案 0 :(得分:0)
您可以一次读取一行文件,然后按空格分割,然后迭代,然后按句点字符拆分。然后像这样格式化整数部分和小数部分。
"{0:d}.{0:>2d}".format(characteristic, mantissa)
答案 1 :(得分:0)
您可以一次阅读整个文件内容,split
空格和换行符处的字符串以及join
所需顺序的各个部分:一行中的每十个元素,然后是一个新行和等等:
import re
with open("data.txt") as f:
content = re.split(' |\n', f.read())
print "\n".join([" ".join(content[i::10]) for i in range(1, 10)])
文件内容data.txt
:
0.1
0.02 0.03 0.04
0.05 0.06 0.07
0.08 0.09 0.10
0.2
0.11 0.12 0.13
0.14 0.15 0.16
0.17 0.18 0.19
0.3
1 2 3
4 5 6
7 8 9
输出:
0.02 0.11 1
0.03 0.12 2
0.04 0.13 3
0.05 0.14 4
0.06 0.15 5
0.07 0.16 6
0.08 0.17 7
0.09 0.18 8
0.10 0.19 9