从新行定界符的 txt 文件中检索值
Retrieving values from a txt file of a new line delimiter
我正在尝试为由换行符分隔的每个数据编制索引。
import cvs
with open('some_file.txt') as f:
data = f.read()
data = data.splitlines()
我可以把它读成
print data[0]
>>> 0.00000e+00 1.39984e+23 8.08209e+22 1.34691e+23 7.94736e+07 3.54090e+21 1.61507e+04 0.00000e+00 4.36307e-01 2.53048e-02 1.17516e-03 5.58890e+03 5.06638e+00 0.00000e+00 4.53490e-02 5.94527e-01 4.49423e-01 5.40076e-02 8.84406e-01 1.44792e-05 2.13497e+04 3.38802e+06 3.38397e-04 3.66874e-01 2.09206e-01 3.59185e-01 45536941
print data[1]
>>> 1.00000e+00 1.46478e+23 8.85202e+22 1.07364e+23 5.65863e+07 3.16193e+21 3.11939e+03 0.00000e+00 9.08775e-01 2.01753e-02 9.82056e-04 7.68423e+03 8.29516e+00 0.00000e+00 1.26423e-01 1.68922e-02 9.82179e-01 4.30002e-02 1.21514e+00 2.93802e-06 2.44811e+06 4.00670e+06 2.71861e-05 3.79373e-01 2.31627e-01 2.82576e-01 48923553
print data[:2]
>>> [' 0.00000e+00 1.39984e+23 8.08209e+22 1.34691e+23 7.94736e+07 3.54090e+21 1.61507e+04 0.00000e+00 4.36307e-01 2.53048e-02 1.17516e-03 5.58890e+03 5.06638e+00 0.00000e+00 4.53490e-02 5.94527e-01 4.49423e-01 5.40076e-02 8.84406e-01 1.44792e-05 2.13497e+04 3.38802e+06 3.38397e-04 3.66874e-01 2.09206e-01 3.59185e-01 45536941', ' 1.00000e+00 1.46478e+23 8.85202e+22 1.07364e+23 5.65863e+07 3.16193e+21 3.11939e+03 0.00000e+00 9.08775e-01 2.01753e-02 9.82056e-04 7.68423e+03 8.29516e+00 0.00000e+00 1.26423e-01 1.68922e-02 9.82179e-01 4.30002e-02 1.21514e+00 2.93802e-06 2.44811e+06 4.00670e+06 2.71861e-05 3.79373e-01 2.31627e-01 2.82576e-01 48923553']
每个索引值都有我要索引的特定数量。例如,data[0]
是第一个粒子及其值,其索引号由 data[0][0]
表示,位置 x、y、z 由 data[0][1]
、data[0][2]
表示,和 data[0][3]
,质量 data[0][4]
,依此类推。
类似地,您从第二个粒子 data[1]
、第三个 data[2]
等整个列表 data[:]
.
中检索相同的数量
我的问题是我无法像
那样很好地索引每个粒子值
posx = data[:][1]
posy = data[:][2]
posz = data[:][3]
...
或分成每一列。
posx = [float(row.split()[1]) for row in data]
posy = [float(row.split()[1]) for row in data]
posz = [float(row.split()[1]) for row in data]
以它所在的格式给出。
如果你想复制它,我提供了一个投递箱link:https://www.dropbox.com/sh/6f0cy4gk8x1k0rm/AADser16cMI9Xhhw3lyP7vWaa?dl=0
将此添加到您现有的代码中:
NiceArr = []
for item in data:
NiceArr.append(item.split())
NiceArr
将成为一个包含数组的数组,每个内部数组将包含粒子值。
您可以按照在 post 中尝试使用的方式检索每个粒子值。
我正在尝试为由换行符分隔的每个数据编制索引。
import cvs
with open('some_file.txt') as f:
data = f.read()
data = data.splitlines()
我可以把它读成
print data[0]
>>> 0.00000e+00 1.39984e+23 8.08209e+22 1.34691e+23 7.94736e+07 3.54090e+21 1.61507e+04 0.00000e+00 4.36307e-01 2.53048e-02 1.17516e-03 5.58890e+03 5.06638e+00 0.00000e+00 4.53490e-02 5.94527e-01 4.49423e-01 5.40076e-02 8.84406e-01 1.44792e-05 2.13497e+04 3.38802e+06 3.38397e-04 3.66874e-01 2.09206e-01 3.59185e-01 45536941
print data[1]
>>> 1.00000e+00 1.46478e+23 8.85202e+22 1.07364e+23 5.65863e+07 3.16193e+21 3.11939e+03 0.00000e+00 9.08775e-01 2.01753e-02 9.82056e-04 7.68423e+03 8.29516e+00 0.00000e+00 1.26423e-01 1.68922e-02 9.82179e-01 4.30002e-02 1.21514e+00 2.93802e-06 2.44811e+06 4.00670e+06 2.71861e-05 3.79373e-01 2.31627e-01 2.82576e-01 48923553
print data[:2]
>>> [' 0.00000e+00 1.39984e+23 8.08209e+22 1.34691e+23 7.94736e+07 3.54090e+21 1.61507e+04 0.00000e+00 4.36307e-01 2.53048e-02 1.17516e-03 5.58890e+03 5.06638e+00 0.00000e+00 4.53490e-02 5.94527e-01 4.49423e-01 5.40076e-02 8.84406e-01 1.44792e-05 2.13497e+04 3.38802e+06 3.38397e-04 3.66874e-01 2.09206e-01 3.59185e-01 45536941', ' 1.00000e+00 1.46478e+23 8.85202e+22 1.07364e+23 5.65863e+07 3.16193e+21 3.11939e+03 0.00000e+00 9.08775e-01 2.01753e-02 9.82056e-04 7.68423e+03 8.29516e+00 0.00000e+00 1.26423e-01 1.68922e-02 9.82179e-01 4.30002e-02 1.21514e+00 2.93802e-06 2.44811e+06 4.00670e+06 2.71861e-05 3.79373e-01 2.31627e-01 2.82576e-01 48923553']
每个索引值都有我要索引的特定数量。例如,data[0]
是第一个粒子及其值,其索引号由 data[0][0]
表示,位置 x、y、z 由 data[0][1]
、data[0][2]
表示,和 data[0][3]
,质量 data[0][4]
,依此类推。
类似地,您从第二个粒子 data[1]
、第三个 data[2]
等整个列表 data[:]
.
我的问题是我无法像
那样很好地索引每个粒子值posx = data[:][1]
posy = data[:][2]
posz = data[:][3]
...
或分成每一列。
posx = [float(row.split()[1]) for row in data]
posy = [float(row.split()[1]) for row in data]
posz = [float(row.split()[1]) for row in data]
以它所在的格式给出。
如果你想复制它,我提供了一个投递箱link:https://www.dropbox.com/sh/6f0cy4gk8x1k0rm/AADser16cMI9Xhhw3lyP7vWaa?dl=0
将此添加到您现有的代码中:
NiceArr = []
for item in data:
NiceArr.append(item.split())
NiceArr
将成为一个包含数组的数组,每个内部数组将包含粒子值。
您可以按照在 post 中尝试使用的方式检索每个粒子值。