stdinstdoutpython
对于我的工作,我习惯于使用matlab。不,我也尝试学习python的基本技能。目前我正在做以下练习: 您感兴趣的是提取所有看起来像 这个stdinstdoutpython,python,Python,对于我的工作,我习惯于使用matlab。不,我也尝试学习python的基本技能。目前我正在做以下练习: 您感兴趣的是提取所有看起来像 这个 键能LDA-17.23014168 eV 特别是,您希望收集数值(例如, -17.23014168),然后打印出来。编写一个脚本,从标准输入读取输出文件,并使用正则表达式 找到要提取的值。把你的脚本全部打印出来 将值转换为标准输出 这是我使用的代码: import os,re from string import rjust dataEx=re.compi
键能LDA-17.23014168 eV
特别是,您希望收集数值(例如,
-17.23014168
),然后打印出来。编写一个脚本,从标准输入读取输出文件,并使用正则表达式
找到要提取的值。把你的脚本全部打印出来
将值转换为标准输出
这是我使用的代码:
import os,re
from string import rjust
dataEx=re.compile(r'''
^\s*
<Aug22-2008>
\s+
<\d{2}:\d{2}:\d{2}>
\s+
Bond
\s
Energy
\s
LDA
\s+
((\+|-)?(\d*)\.?\d*)
''',re.VERBOSE)
f=open('Datafile_Q2.txt','r')
line = f.readline()
while line != '':
line = f.readline() # Get next line
m = dataEx.match(line)
if m:
# print line
print m.group(1)
导入操作系统,重新
从字符串导入rjust
dataEx=re.compile(r''
^\*
\+
\+
债券
\
能量
\
LDA
\+
(\+\124;-)?(\ d*)\.?\d*)
'',重复冗长)
f=打开('Datafile_Q2.txt','r')
line=f.readline()
while line!='':
line=f.readline()#获取下一行
m=dataEx.match(行)
如果m:
#打印行
打印m.group(1)
有了这段代码,我可以在他们要求的数据文件中找到所有值。不过,我确实有几个问题。首先,他们问一些关于标准输入法和标准输出法的具体问题。不,我想知道我是否使用正确的代码从标准输入读取输出文件,是否真的以这种方式将所有值打印到标准输出?此外,我想知道是否有更好或更简单的方法来找到所需的值 为什么要使用正则表达式?拆分输入:
>>> s = """<Aug22-2008> <15:37:37> Bond Energy LDA -17.23014168 eV"""
>>> s.split()[5]
'-17.23014168'
>>>s=“”要查找您要查找的数字,我将在正则表达式中使用正向的lookback和lookahead函数
(?<=Bond Energy LDA ).*(?= eV)
然后您可以直接从stdin中读取行:
import sys
import re
from line in sys.stdin:
matchObj = re.search(r '(?<=Bond Energy LDA ).*(?= eV)', line, re.I)
if(matchObj):
print(matchObj.group())
导入系统
进口稀土
从sys.stdin中的行:
matchebj=re.search(r’(?如果您想使用正则表达式,您可以使用:
(?:<.*>\W+)[a-zA-Z ]+([-+]?[0-9]*\.?[0-9]+)
(?:\W+[a-zA-Z]+([-+]?[0-9]*\.?[0-9]+)
如果只有一行输入,很难找到正则表达式。
(?:<.*>\W+)[a-zA-Z ]+([-+]?[0-9]*\.?[0-9]+)