如何拆分此列表?

时间:2018-07-27 02:02:23

标签: python

我正在尝试从.txt文件的第二列中读取元素,但是无论我如何尝试,都无法。我得到的最接近的格式是:

eigenlist = ['1    -58.44285   0.00000     3.000   0.000', 
             '2    -58.10455   0.33830     1.000   0.000',  
             '3    -57.57816   0.86469     0.000   1.000', 
             '4    -57.48698   0.95587     4.000   0.000', 
             '5    -56.90493   1.53792     5.000   0.000', 
             '6    -56.54419   1.89867     3.000   0.000']

我只想要每个元素中的第二个数字。

3 个答案:

答案 0 :(得分:0)

您可以简单地使用re.subsplit

l = [re.sub(' +',' ', x ).split()[1] for x in eigenlist]

输出

['-58.44285', '-58.10455', '-57.57816', '-57.48698', '-56.90493', '-56.54419']

另一个选择是使用pandas.read_table

df = pd.read_table(io.StringIO('\n'.join(eigenbullshit)), 
                   delim_whitespace=True, 
                   header=None)

    0   1           2       3   4
0   1   -58.44285   0.00000 3.0 0.0
1   2   -58.10455   0.33830 1.0 0.0
2   3   -57.57816   0.86469 0.0 1.0
3   4   -57.48698   0.95587 4.0 0.0
4   5   -56.90493   1.53792 5.0 0.0
5   6   -56.54419   1.89867 3.0 0.0

然后

print(df[1])

0   -58.44285
1   -58.10455
2   -57.57816
3   -57.48698
4   -56.90493
5   -56.54419

如果有很多行,这特别有用。

答案 1 :(得分:0)

列表理解如何?

a = [float(s.split()[1]) for s in eigenlist]

答案 2 :(得分:0)

其他答案涵盖了这个问题。我只想表明您无需使用库就可以做到这一点。

distance [i][0]= latt;
distance [i][1]= longt;

您现在可以轻松访问每个元素:

>>> new_list = []
>>> for sublist in eigenlist:
...     new_list.append([s for s in sublist.split(' ') if s])
...
>>> new_list
[['1', '-58.44285', '0.00000', '3.000', '0.000'], ['2', '-58.10455', '0.33830', '1.000', '0.000'], ['3', '-57.57816', '0.86469', '0.000', '1.000'], ['4', '-57.48698', '0.95587', '4.000', '0.000'], ['5', '-56.90493', '1.53792', '5.000', '0.000'], ['6', '-56.54419', '1.89867', '3.000', '0.000']]
相关问题