2015-03-24 38 views
0

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

     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列这样的,我必须只提取列中的数字。我想知道是否有一个特定的功能,可以更容易地从列中提取。我真的不知道如何存储它,考虑到我必须能够在(矩阵或列表清单?)之后记得它。

有人可以帮我开始吗?

+0

我会将它存储到列表或numpy数组的字典中 – 2015-03-24 21:57:45

+0

您可以简单地逐行读取文件并使用're.split('\ s +',line)分割行' – 2015-03-24 22:03:31

+0

我会使用Pandas读取文件,然后使用熊猫的方法和功能来操作表格。 以下是如何读取文件: 'import pandas' 'df = pandas.read_csv(“C:\\ File.txt”,sep ='\ t')' – multigoodverse 2015-03-24 22:22:37

回答

1

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

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

如果它不制表符分隔的,你可以通过线和分割上的空白文件读取线。删除空格,你会有一行数据。然后只需在每一行中访问您需要的职位。