我可以通过逐行读取mystring.txt文件并根据re.search(r'pattern',line_txt)方法检查该行来提取特定的模式。
以下是mystring.txt
`
Client: //home/SCM/dev/applications/build_system/test_suite_linux/unit_testing
Stream: //MainStream/testing_branch
Options: dir, norm accel, ddl
SubmitOptions: vis, dir, cas, cat
`
使用python,我可以获得流名称为//MainStream/testing_branch
import re
with open("mystring.txt",'r') as f:
mystring= f.readlines()
for line in mystring:
if re.search(r'^Stream:',line):
stream_name = line.split('t')[1]
print stream_name
与其在循环中一行一行地进行,如何仅使用re模块就可以提取相同的信息?
您可以一次性读取文件并使用re.findall
(注意,如果文件太大,将其加载到主存中不是一个好主意)
import re
content = open("input_file").read()
print(re.findall("^Stream: (.*)", content, re.M))
是的,您可以将:re.MULTILINE
与re.search(..)
一起使用。
>>> import re
>>> re.search(r'^Stream:s([^n]+)', f.read(), re.MULTILINE).group(1)
'//MainStream/testing_branch'
以下是解决方案
f = open("mystring.txt").read()
import re
got = re.findall("Stream: .+n", f)
got = got[0].strip()
print(got.split(": ")[1])