You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按空行分隔对文本文件中的数据进行分组

问题

我有一个以空行分隔数据的文本文件mydata.txt,希望将其解析为指定的字典格式(键为intro开头的行,对应值为后续相关行组成的列表)。当前代码运行后得到扁平化列表,如何调整代码以获取预期输出?

文件内容(mydata.txt)

introA
aboutA1
aboutA2
aboutA3
aboutA4

introB
aboutB1
aboutB2
aboutB3
aboutB4

当前代码

with open("mydata.txt", "r") as f:
    data = [line.strip() for line in f if line.strip()]

print(data)

当前输出

['introA', 'aboutA1', 'aboutA2', 'aboutA3', 'aboutA4', 'introB', 'aboutB1', 'aboutB2', 'aboutB3', 'aboutB4']

预期输出

"introA": ['aboutA1', 'aboutA2', 'aboutA3', 'aboutA4'],
"introB": ['aboutB1', 'aboutB2', 'aboutB3', 'aboutB4'],
解决方案

要生成预期的字典结构,需要在遍历文本行时识别intro开头的行作为键,将后续的非intro行收集为对应的值,直到遇到下一个intro行。调整后的代码如下:

result = {}
current_key = None

with open("mydata.txt", "r") as f:
    for line in f:
        cleaned_line = line.strip()
        if not cleaned_line:
            continue  # 跳过空行
        # 识别新的键
        if cleaned_line.startswith("intro"):
            current_key = cleaned_line
            result[current_key] = []
        # 收集对应键的值
        elif current_key is not None:
            result[current_key].append(cleaned_line)

# 按预期格式输出
for key, values in result.items():
    print(f'"{key}": {values},')

逻辑说明

  1. 初始化空字典result和current_key变量,用于跟踪当前正在收集值的键。
  2. 逐行读取文件,先去除每行首尾空白,直接跳过空行。
  3. 遇到intro开头的行时,将其设为当前键,并在字典中创建对应的空列表。
  4. 非intro开头的行,若当前已有有效键,则添加到该键对应的列表中。
  5. 最后遍历字典,按要求的格式打印键值对。

内容的提问来源于stack exchange,提问作者DarCoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 07:27:40