Python搜索、列表和选定的打印

2024-05-17 10:12:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个文件,里面有一个有机分子的几种能量。 我想做一个python脚本,它允许我打印一个选定的能量,比如说第一个或第二个或最后一个或最后一个之前的第三个,等等。 我正在学习python,我知道我应该列一个搜索列表,插入第二个参数来指示我要打印的能量。因为我正在学习,所以我不知道该怎么做。这是我写的剧本,但第一个剧本只打印第一个能量,第二个剧本只打印最后一个能量。非常感谢您的帮助。(下面是一个链接,其中包含我用作输入的文件示例https://dl.dropbox.com/u/63216126/ActCat.out

我做的第一个代码

    import sys
    import re

    filename = sys.argv[1]
    newfile = str(filename) + ".3d"

    openold = open(filename,"r")
    opennew = open(newfile,"w")


    rline = openold.readlines()

    for line in rline:
        if re.search( r"SCF Done", line ):
            words = line.split()

            energy = float( words[4] )

            print >>opennew,  "The energy of the molecule is %f kcal mol-1" % energy
            break

    openold.close()
    opennew.close()

我做的第二个密码

    import sys
    import re


    filename = sys.argv[1]
    newfile = str(filename) + ".3d"

    openold = open(filename,"r")
    opennew = open(newfile,"w")

    start = 0

    rline = openold.readlines()

    for i in range (len(rline)):
        if "SCF Done" in rline[i]:
            start = i

    for line in rline[start:start+1] :
        words = line.split()
        energy = words[4]
        print >>opennew,  "The energy of the molecule is %s kcal mol-1" % energy
        break


    openold.close()
    opennew.close()

Tags: inimportclosesyslineopenfilenamestart
1条回答
网友
1楼 · 发布于 2024-05-17 10:12:26

是否要有选择地选择要打印的能量?这将把所有的能量聚集到一个列表中,然后你可以索引到这个列表中来打印你想要的。请注意,我从循环中删除了break,因此它收集了所有这些元素。你知道吗

import sys
import re

filename = sys.argv[1]
newfile = str(filename) + ".3d"

openold = open(filename,"r")
opennew = open(newfile,"w")


rline = openold.readlines()
energies = []
line_number = 0
for line in rline:
    line_number += 1
    if re.search( r"SCF Done", line ):
        words = line.split()

        energy = float( words[4] )
        energies.append(("The energy of the molecule is %f kcal mol-1" % energy, line_number))

print >>opennew, energies[0] # print first energy and line number
print >>opennew, energies[4] # print 5th energy and line number
print >>opennew, energies[-1] # print last energy and line number
print energies[1][0] # print energy
print energies[1][1] # print line number

openold.close()
opennew.close()

相关问题 更多 >