从文本文件的列中提取数据

时间:2015-03-24 21:52:19

标签: python file text

我目前正在开展一个项目,但我遇到了问题。我必须从文本文件中提取数据供以后使用,但我真的不知道如何从这个开始。这就是数据的样子:

                        21        22        23        24        25
                     (SGU)--V  (PIU)--V  (PIU)--V  (SGG)--V  (PIG)--V
   Eigenvalues --     0.12875   0.15169   0.15169   0.18748   0.22362
 1 1   Si 1S         -0.10815   0.00000   0.00000  -0.05058   0.00000
 2        2S         -1.54103   0.00000   0.00000   0.42252   0.00000
 3        3PX         0.00000  -0.50361   0.00000   0.00000  -0.48055
 4        3PY         0.00000   0.00000  -0.50361   0.00000   0.00000
 5        3PZ        -0.36562   0.00000   0.00000  -0.49574   0.00000
 6        4PX         0.00000   0.77410   0.00000   0.00000   1.31613
 7        4PY         0.00000   0.00000   0.77410   0.00000   0.00000
 8        4PZ         1.87724   0.00000   0.00000   1.02724   0.00000
 9        5D 0       -0.06070   0.00000   0.00000  -0.09982   0.00000
10        5D+1        0.00000   0.01079   0.00000   0.00000  -0.08697
11        5D-1        0.00000   0.00000   0.01079   0.00000   0.00000
12        5D+2        0.00000   0.00000   0.00000   0.00000   0.00000
13        5D-2        0.00000   0.00000   0.00000   0.00000   0.00000
14 2   Si 1S          0.10815   0.00000   0.00000  -0.05058   0.00000
15        2S          1.54103   0.00000   0.00000   0.42252   0.00000
16        3PX         0.00000  -0.50361   0.00000   0.00000   0.48055
17        3PY         0.00000   0.00000  -0.50361   0.00000   0.00000
18        3PZ        -0.36562   0.00000   0.00000   0.49574   0.00000
19        4PX         0.00000   0.77410   0.00000   0.00000  -1.31613
20        4PY         0.00000   0.00000   0.77410   0.00000   0.00000
21        4PZ         1.87724   0.00000   0.00000  -1.02724   0.00000
22        5D 0        0.06070   0.00000   0.00000  -0.09982   0.00000
23        5D+1        0.00000  -0.01079   0.00000   0.00000  -0.08697
24        5D-1        0.00000   0.00000  -0.01079   0.00000   0.00000
25        5D+2       -0.00000   0.00000   0.00000   0.00000   0.00000
26        5D-2        0.00000   0.00000   0.00000   0.00000   0.00000
                        26
                     (PIG)--V
   Eigenvalues --     0.22362
 1 1   Si 1S          0.00000
 2        2S          0.00000
 3        3PX         0.00000
 4        3PY        -0.48055
 5        3PZ         0.00000
 6        4PX         0.00000
 7        4PY         1.31613
 8        4PZ         0.00000
 9        5D 0        0.00000
10        5D+1        0.00000
11        5D-1       -0.08697
12        5D+2        0.00000
13        5D-2        0.00000
14 2   Si 1S          0.00000
15        2S          0.00000
16        3PX         0.00000
17        3PY         0.48055
18        3PZ         0.00000
19        4PX         0.00000
20        4PY        -1.31613
21        4PZ         0.00000
22        5D 0        0.00000
23        5D+1        0.00000
24        5D-1       -0.08697
25        5D+2        0.00000
26        5D-2        0.00000

我有26个这样的列,我必须只提取列中的数字。我想知道是否有某种功能可以更容易从列中提取。在我不知道如何存储它之后,考虑到我必须能够在它之后(矩阵或列表列表?)回忆它。

有人可以帮助我开始吗?

1 个答案:

答案 0 :(得分:1)

这看起来像是一组制表符分隔的值。您可以使用CSV模块:

>>> import csv
>>> with open('file.txt', 'rb') as fin: data = list(csv.reader(fin, delimiter='\t'))

如果它没有制表符分隔,您可以逐行读取文件并在空白处分割。删除空格,您将拥有一行数据。然后只需访问每行所需的位置。