这是我的解析器的一部分。问题是,它没有阅读和打印三角形和强度-也许有人可以帮助?你知道吗
if (line[1:24] == "Mulliken atomic charges" or
line[1:22] == "Lowdin Atomic Charges"):
if not hasattr(self, "atomcharges"):
self.atomcharges = {}
ones = inputfile.next()
charges = []
nline = inputfile.next()
while not "Sum of" in nline:
charges.append(float(nline.split()[2]))
nline = inputfile.next()
if "Mulliken" in line:
self.atomcharges["mulliken"] = charges
else:
self.atomcharges["lowdin"] = charges
if line[0:6] == 'DeltaE':
while not "DeltaE" in nline:
deltae = []
intensity = []
line=line.strip()
#then we have a line like: DeltaE = 13.5423 | TDMI^2 = 0.6670E-01, Intensity = 6553.
self.deltae = float(line.split('|')[0].strip().split('=')[1].strip())
line = inputfile.next()
self.intensity = float(line.split('|')[1].strip().split(',')[1].strip().split('=')[1].strip())
line = inputfile.next()
print deltae, ',', intensity
部分输出.log文件(本)输出.log非常大(如15mb)
Initial state: <0|
Final state: |1^1>
DeltaE = 13.5423 | TDMI^2 = 0.6670E-01, Intensity = 6553.
........................................
Initial state: <0|
Final state: |2^1>
DeltaE = 17.9918 | TDMI^2 = 0.2693 , Intensity = 0.2668E+05
........................................
Initial state: <0|
Final state: |3^1>
DeltaE = 22.4523 | TDMI^2 = 0.4740E-01, Intensity = 4644.
........................................
我想在使用parse方法后打印DeltaE和Intensity,但没有任何效果我可以获得其他值,但没有DeltaE和Intensity:
>>> mylogfile.parse()
[Gaussian BChla.out INFO] Creating attribute charge: 0
[Gaussian BChla.out INFO] Creating attribute mult: 1
[Gaussian BChla.out INFO] Creating attribute natom: 82
[Gaussian BChla.out INFO] Creating attribute atommasses[]
[Gaussian BChla.out INFO] Creating attribute atomnos[]
[Gaussian BChla.out INFO] Creating attribute vibsyms[]
[Gaussian BChla.out INFO] Creating attribute vibfreqs[]
[Gaussian BChla.out INFO] Creating attribute vibirs[]
[Gaussian BChla.out INFO] Creating attribute vibdisps[]
[Gaussian BChla.out INFO] Creating attribute temperature: 298.15
[Gaussian BChla.out INFO] Creating attribute enthaply: -2225.475525
[Gaussian BChla.out INFO] Creating attribute freeenergy: -2225.601048
[Gaussian BChla.out INFO] Creating attribute grads[]
[Gaussian BChla.out INFO] Creating attribute entropy: 0.000421006204931
[Gaussian BChla.out INFO] Creating attribute atomcoords[]
[Gaussian BChla.out INFO] Creating attribute coreelectrons[]
<cclib.parser.data.ccData object at 0x02FA1890>
>>>
如果您想保持相同的方法,我认为您需要做的就是删除从原子电荷解析中错误复制的额外代码,这是可行的:
下面是一个解析该行的不同方法的示例—指定与该行结构匹配的正则表达式。您需要在文件的顶部添加
import re
:下面是测试代码的完整示例:
输出:
相关问题 更多 >
编程相关推荐