【发布时间】:2021-12-30 23:42:29
【问题描述】:
我在 .txt 文件中有一段文本,内容如下:
调查结果概述
--datatext1
调查结果概述
--datatext2
调查结果概述
--datatext3
调查结果摘要
调查结果概述可以随机发生多次,也可以只发生一次。我只对 datatext3 (可变数量的文本)感兴趣。也就是说,只有最后一次出现的“OVERVIEW OF FINDINGS”和“SUMMARY OF FINDINGS”之间的文本。
有几篇文章介绍了如何使用re 以及如何拆分字符串以获得正确的文本。从他们那里我能够找到一个在下面有效的解决方案。但是,它是多个 for 循环和一个 if/elif append 循环。这似乎非常令人费解,我想知道我是否忽略了一个更简单的解决方案?
#Index all occurrences of OVERVIEW OF FINDINGS and SUMMARY OF FINDINGS:
x = []
y = []
for i in re.finditer('OVERVIEW OF FINDINGS', data):
x.append(i.start())
for j in re.finditer('SUMMARY OF FINDINGS', data):
y.append(j.start())
#Append to overview only when the next overview index is after the next summary index
n = 0
overview = []
for m in range(0,len(x)):
if x[m] == x[-1]: #condition for last value in x or if only one value in x
overview.append(data[x[m]+21:y[n]]) #(Note: OVERVIEW OF FINDINGS = +21)
elif x[m+1] > y[n]:
overview.append(data[x[m]+21:y[n]])
if y[-1] == y[n]:
break
else:
n += 1
【问题讨论】: