繁体   English   中英

python:在文件中提取(正则表达式)模式而无需逐行(多行搜索)

[英]python: extracting (regex) pattern in a file without going through line by line (multiline search)

我可以通过逐行读取 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读取文件并使用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])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM