python:在文件中提取(regex)模式,而不需要逐行(多行搜索)



我可以通过逐行读取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.MULTILINEre.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])

最新更新