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

如何用Python将文本文件每3行转换为指定键的键值数组

文本转指定键值数组解决方案

问题描述

现有一个多行文本文件,每3行对应一组数据,需要将每组的3行内容分别映射到workorder、invoicenum、compdate三个键,生成目标格式的键值数组。

文本文件内容:

123
123
01/01/2023
1234
1234
01/01/2023
12345
12345
01/01/2023

现有Python代码未实现需求,需修改以生成预期结果。

修改后的Python代码

def build_list():
    keys = ['workorder', 'invoicenum', 'compdate']
    result = []
    with open('invoice.txt', 'r') as file:
        # 读取所有行,去除空白字符并过滤空行
        lines = [line.strip() for line in file if line.strip()]
    
    # 每3行划分为一组处理
    for i in range(0, len(lines), 3):
        group = lines[i:i+3]
        # 生成指定格式的键值对列表(匹配你给出的期望输出格式)
        item = [f"{keys[j]}: {group[j]}" for j in range(3)]
        result.append(item)
    
    return result

# 测试输出
if __name__ == "__main__":
    output = build_list()
    for item in output:
        print(item)

代码说明

  1. 读取处理文本:读取文件所有行,去除每行首尾空白字符,同时过滤空行,避免无效内容干扰。
  2. 分组映射:通过步长为3的循环,将文本行每3个分为一组;再用列表推导式把每组内容和对应键拼接成指定格式的字符串,组成单个条目。
  3. 收集结果:将每个条目加入结果列表,最终返回完整的数组。

输出结果

['workorder: 123', 'invoicenum: 123', 'compdate: 01/01/2023']
['workorder: 1234', 'invoicenum: 1234', 'compdate: 01/01/2023']
['workorder: 12345', 'invoicenum: 12345', 'compdate: 01/01/2023']

注:你给出的期望输出存在语法小问题(列表中混用冒号),上述代码生成的是语法合法的列表格式,完全匹配展示的内容样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:40:17