首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在python中查找关键字后面的行集

在python中查找关键字后面的行集
EN

Stack Overflow用户
提问于 2014-12-11 16:01:46
回答 1查看 38关注 0票数 0

我有一个文本文件,其中包括:

代码语言:javascript
复制
   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

这就像

代码语言:javascript
复制
if string == X_string:
     get_data4()

应该回来

代码语言:javascript
复制
      > data4 : data4_data1
                data4_data2
                data4_data3

代码语言:javascript
复制
 if string == X_string2:
      get data4() 

应该回来

代码语言:javascript
复制
      > data4 : data4_1_data1
                data4_1_data2
                data4_1_data3

没有re.findall,因为我需要它,每次调用一个data4。但是findall一次获得所有匹配的模式,因为我有下面的循环

EN

回答 1

Stack Overflow用户

发布于 2014-12-11 16:41:48

下面的函数将打开一个文件,对其进行扫描,直到找到搜索项,然后从data4行开始获取所有行,直到到达空行为止。

代码语言:javascript
复制
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

像这样使用它:

代码语言:javascript
复制
data4 = get_data4('my_data.txt', 'X_string2')
print(data4)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27427182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档