如何修改此脚本以搜索多个关键字?

2024-09-27 23:15:29 发布

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

我正在修改一个脚本。这对我来说很困难,所以我来寻求帮助。这个脚本应该从一些.out文件中提取数据,然后将它们写入.txt文件中。问题是我有两个不同的关键字要找。所以,我提供的脚本,我不能修改的东西,然后两个输入文件的例子。你知道吗

#!/usr/bin/env python
# -*- coding: utf-8

#~ Data analysis
import glob, subprocess, shutil, os, math
from funciones import *
for namefile in glob.glob("*.mol2"):
    lstmol2 = []
    lstG=[]
    os.chdir("some_directory")
    searchprocess="grep -i -H 'CURRENT VALUE OF HEAT OF FORMATION =' *.out | sort -k 4 > firstfile.txt" 
#~I need also to look for 'CURRENT BEST VALUE OF HEAT OF FORMATION ='
    os.system(searchprocess)

    fileout=open("results.txt","w")   
    filein=open("firstfile.txt", "r")
    #~ write data in results.txt
    fileout.write('\t %s \n' %("  HOF"))

    for line in filein:
        linediv=line.split()
        HOF=float(linediv[8])

  #~or [10] (for the keyword in need to add) but in both cases I need the float. I need both data of the keywords be included on this file.
        lstG.append(HOF)  
     fileout.close()  
    filein.close()

输入数据,类型1:

foofoofooofoofoofoofoofoo
foofoofooofoofoofoofoofoov
foofoofooofoofoofoofoofoo
CURRENT VALUE OF HEAT OF FORMATION = 1928
foofoofooofoofoofoofoofoo
foofoofooofoofoofoofoofoov

输入数据,类型2:

foofoofooofoofoofoofoofoo
foofoofooofoofoofoofoofoov
foofoofooofoofoofoofoofoo
CURRENT BEST VALUE OF HEAT OF FORMATION = 1930
foofoofooofoofoofoofoofoo
foofoofooofoofoofoofoofoov

Tags: 文件of数据intxt脚本forvalue
1条回答
网友
1楼 · 发布于 2024-09-27 23:15:29

您应该更新grep命令,用?运算符查找可选单词。使用-E标志启用扩展正则表达式,这样就不必转义regex操作符。在模式周围始终使用单引号:

searchprocess="grep -E -i -H 'CURRENT( BEST)? VALUE OF HEAT OF FORMATION =' *.out | sort -k 4 > firstfile.txt"

@PrestonHager是正确的,您应该将linediv[8]更改为linediv[-1],因为在存在最佳值的情况下,数字将位于linediv[9]位置,但在这两种情况下linediv[-1]都会给出所需的结果。你知道吗

相关问题 更多 >

    热门问题