首页 > 解决方案 > 读取文件并在匹配后执行下一行的操作

问题描述

我正在尝试将制表符分隔的文本文件读入 python。但是该文件有多个子标题。像这样的东西:

a
[1,2,3]
[2,3,4]
[3,2,5,6]
b
[1,2,3]
[2,6,4]
[7,5,6]

我正在尝试编写一个将子标题作为参数的函数并执行一个while循环,直到下一个子标题和子标题下方的行作为列表返回。在伪代码中,这就是我的想法:

def func(sub-heading):
    outputlist = [ ]
    with open(filepath) as file:
        for line in file:
            if sub-heading:
                go next line 
                while not sub-heading:
                    outputlist.append(line.rstrip())
    return outputlist

所以如果我调用 func(a),我会得到列表

[ [1,2,3], [2,3,4], [3,2,5,6] ]

但是一旦找到子标题,我就找不到一种方法让外观进入下一行。

任何帮助将不胜感激

编辑以获取更多信息

标签: pythonloopsfor-looptextwhile-loop

解决方案


对于给定的示例,以下将起作用。这仅打印不是子标题的行:

import re


def func():
    pattern = re.compile("\[(.*)\]")
    with open('your_file.txt', 'r') as file:
        for line in file:
            if not pattern.match(line):
                continue  # this is the subheading
            else:
                print(line)


func()

鉴于your_file.txt如下:

a
[1,2,3]
[2,3,4]
[3,2,5,6]
b
[1,2,3]
[2,6,4]
[7,5,6]

推荐阅读