gpt4 book ai didi

python - 从 python 中的文本文件中读取带有正则表达式的文件片段

转载 作者:行者123 更新时间:2023-12-01 06:02:23 31 4
gpt4 key购买 nike

我有一个文本文件,我想在其中使用正则表达式匹配单词 PATTERN 并提取 STARTEND 之间的文本(文本文件如下所示)。我不想直接匹配 STARTEND 字段,因为该部分中有随机数据,但 PATTERN 保持不变,因此我可以很容易匹配这个。我有一个快速但肮脏的 Python 脚本可以匹配该模式,但我陷入了下一步。

HERE IS MY PATTERN:


IGNORE SECTION

**************************************************
START 1 2 3 4 5
. . . . . .
. . . . . .
. . . . . .
END . . . . .



TEXT FILE CONTINUES...........
.
.
.
.

**************************************************

如何告诉 Python 读取模式下方 5 行的内容,并在读取第一个空行时停止

这是我的脚本:

#!usr/bin/env python

import re

pattern = r'PATTERN:'+'$'

count = 0
fp = open('fileinput.txt')
for line in fp:
count += 1

match = re.search(pattern,line)
if match:
print 'Matched text:', line, 'Line', count
line_match = count

new_line = line_match+4

我已经标记了我想要的行,但无法告诉Python从此时开始读取文件,并在遇到空行时退出。有什么建议吗?

最佳答案

我认为您实际上根本不需要正则表达式,您只需使用 endswith 即可。这是我将如何实现它。它不可扩展,但它可以满足您的需求:

matching = False
found = []
with open('fileinput.txt', 'r') as file
it = iter(file)
for line in it:
if matching:
if line.strip() == '':
break
else:
found.append(line)
elif line.endswith('PATTERN:'):
for _ in range(6):
next(it)
matching = True

由于您知道 START 发生在 PATTERN 之后 5 行,因此无需搜索它,因此我使用 assert 来确保这就是预期的结果。匹配的行存储到 found 中,您可以使用

很好地打印它们
for line in found:
print line

关于python - 从 python 中的文本文件中读取带有正则表达式的文件片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9668867/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com