我有一个文本文件,其中包括:
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匹配后立即检索X_string
这就像
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一次获得所有匹配的模式,因为我有下面的循环
发布于 2014-12-11 16:41:48
下面的函数将打开一个文件,对其进行扫描,直到找到搜索项,然后从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)https://stackoverflow.com/questions/27427182
复制相似问题