我有一个包含以下内容的文本文件:
X_string
> data1 : data
> data2 : data
> data3 : data
> data4 : data4_data1
data4_data2
data4_data3
X_string2
> data1 : data
> data2 : data
> data3 : data
> data4 : data4_1_data1
data4_1_data2
data4_1_data3
等等。 data4_data的数量......动态变化。但在它结束后,有一个空行分隔下一个相似的序列。我想知道是否有一种方法可以在与 X_string
匹配后立即检索找到的data4这就像
if string == X_string:
get_data4()
应该返回
> data4 : data4_data1
data4_data2
data4_data3
和
if string == X_string2:
get data4()
应该返回
> data4 : data4_1_data1
data4_1_data2
data4_1_data3
没有 re.findall 因为我需要每次调用一个data4。但是findall一次获得所有匹配的模式,因为我在循环中有以下内容
答案 0 :(得分:0)
以下函数将打开一个文件,扫描它直到找到搜索词,然后获取以data4行开头的所有行,直到找到一个空行。
def get_data4(filename, search_term):
out = [] # will accumulate data4 lines
with open(filename) as f:
# find search term
for line in f:
if line.strip() == search_term:
break
# skip first three data items
next(f)
next(f)
next(f)
# find data4 (all lines until blank line)
for line in f:
if not line.strip():
break
out.append(line)
return ''.join(out) # concatenate data4 back into a string
像这样使用:
data4 = get_data4('my_data.txt', 'X_string2')
print(data4)