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

求助:将特定结构TXT解析为字符串键值对字典列表

解决你的TXT文件解析问题

首先看你的需求:把以start和end包裹的块解析成字典列表,所有键值都转为字符串。你的现有代码有几个关键问题需要修正:

  • 你用了startpayment/endpayment匹配,但原文本里是start/end,关键词不匹配导致逻辑无法触发
  • 假设文本按行读取,但你的输入实际是一行内包含多个start-end块,按行处理的逻辑不适用
  • 字典初始化位置错误,会导致所有块共用同一个字典,最终列表里的元素都是同一个对象的引用
  • 你不需要判断值的类型,需求明确要求所有键值统一转为字符串,直接处理即可

下面是修正后的代码,完全贴合你的需求:

# 假设你已经把TXT文件内容读取到了text变量中
text = "start id=1 date=21.05.2018 summ=500 end start id=7 date=23.05.2018 summ=500 owner=guest end"

# 第一步:分割出所有有效的start-end块
processed_parts = text.strip().split(" end ")
result_list = []

for part in processed_parts:
    # 跳过空内容或不符合格式的片段
    if not part.startswith("start"):
        continue
    # 移除开头的"start "前缀,提取块内的键值对内容
    content = part[len("start "):]
    if not content:
        continue
    # 按空格分割成单个键值对
    key_value_pairs = content.split()
    current_dict = {}
    for pair in key_value_pairs:
        # 用split("=", 1)拆分,避免值中包含=的情况(如果有)
        key, value = pair.split("=", 1)
        # 强制将键和值转为字符串类型
        current_dict[str(key)] = str(value)
    result_list.append(current_dict)

print(result_list)

运行后输出的结果就是你需要的字典列表:

[{'id': '1', 'date': '21.05.2018', 'summ': '500'}, {'id': '7', 'date': '23.05.2018', 'summ': '500', 'owner': 'guest'}]

额外说明(针对多行TXT的情况)

如果你的TXT文件是多行格式(比如每个start-end块分散在多行),只需要先把所有行内容合并成一个字符串,再用上面的逻辑处理即可:

# 读取多行TXT文件
with open("your_file.txt", "r", encoding="utf-8") as f:
    # 合并所有行并去除多余空格
    text = " ".join(line.strip() for line in f)

# 后续解析逻辑和上面的代码一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:36:19