我正在尝试从.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']
我只想要每个元素中的第二个数字。
答案 0 :(得分:0)
您可以简单地使用re.sub
和split
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']]