我想读一本书文件.txt在python中,然后打印一个特定的位置,我有两方的“轨道能量”,但我只对最后一方感兴趣,特别是,对应于2.0000和0.0000的线。这里的输入文件是:
------------轨道能量------------------
NO OCC E(Eh) E(eV)
0 2.0000 -19.126728 -520.4647
1 2.0000 -1.009435 -27.4681
2 2.0000 -0.538078 -14.6418
3 2.0000 -0.388855 -10.5813
4 2.0000 -0.321100 -8.7376
5 0.0000 -0.008155 -0.2219
6 0.0000 0.044286 1.2051
7 0.0000 0.141342 3.8461
8 0.0000 0.144536 3.9330
9 0.0000 0.153520 4.1775
10 0.0000 0.168115 4.5746
---------------- ORBITAL ENERGIES ----------------
NO OCC E(Eh) E(eV)
0 2.0000 -19.127397 -520.4829
1 2.0000 -1.014381 -27.6027
2 2.0000 -0.530762 -14.4428
3 2.0000 -0.398228 -10.8363
4 2.0000 -0.322062 -8.7638
5 0.0000 -0.007625 -0.2075
6 0.0000 0.044967 1.2236
7 0.0000 0.140524 3.8238
8 0.0000 0.144488 3.9317
9 0.0000 0.157663 4.2902
10 0.0000 0.166347 4.5265
11 0.0000 0.221116 6.0169
我用了这个代码:
#!/usr/bin/env python
import sys, os
# ------------- GET INPUT FILE ------------- #
if len(sys.argv) <= 1:
name = raw_input("Enter path to input: ")
else:
name = sys.argv[1]
fo = open(name, "r")
lines = fo.readlines()
fo.close()
# ------------------------------------------ #
# Define Variables
omega = 0
o_HOMO = []
o_LUMO = []
# Sort Input Into Lists
for line in lines:
line = line.split() # split lines into lists
if not line: # skip empty lines
continue
if len(line) >= 3:
if line[1] == '2.0000': # gather neutral occupied eigenvalues (if closed shell)
o_HOMO.append(line[3])
elif line[1] == '0.0000': # gather virtual orbitals
o_LUMO.append(line[3])
for idx, item in enumerate(o_HOMO): #HOMO
if idx == len(o_HOMO) - 1:
print(item)
for idx, item in enumerate(o_LUMO): #LUMO
if idx == len(o_LUMO) - 1:
print(item)
我的结果是这样的:
零下8.7638
6.0169年
但我想要这样的结果:
零下8.7638
-0.2075年
使用
Python 3
的解决方案:输出:
Data.txt
文件包含:如果你不理解任何部分,请分享。你知道吗
相关问题 更多 >
编程相关推荐