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

如何按指定分隔符分割文本文件内容并存储为对象或列表

文本按指定分隔符拆分存储解决方案

原始文本格式

Total Number of Direction(s): 2
1.) ZRB0002, LA_ATC_ZATC, HECAZATC, 21.08.2021 00:00:55
2.) CJC002, LA_NEW_CAPITAL_ZAZR, HECPZAZR, 21.08.2021 00:00:56
FF HECAZATC 210001 OEJNINDA
(EST-DLH637/A4252-OERK-PASAM/0011F380-EDDF)
Number of Chars: 12 Number of Words: 3
Total Number of Direction(s): 2
1.) ZRB0002, LA_ATC_ZATC, HECAZATC, 21.08.2021 00:00:55
2.) CJC002, LA_NEW_CAPITAL_ZAZR, HECPZAZR, 21.08.2021 00:00:56
FF HECAZATC 210001 OEJNINDA
(EST-DLH637/A4252-OERK-PASAM/0011F380-EDDF)
Number of Chars: 12 Number of Words: 3

需求说明

将上述文本以Total Number of Direction(s)为分隔符拆分,每个拆分单元包含分隔符本身及后续到下一个分隔符前的所有内容,最终存储为键为序号、值为对应单元字符串的字典,预期格式如下:

{1 :  "Total Number of Direction(s): 2 1.) ZRB0002, LA_ATC_ZATC, HECAZATC, 21.08.2021 00:00:55 2.) CJC002, LA_NEW_CAPITAL_ZAZR, HECPZAZR, 21.08.2021 00:00:56 FF HECAZATC 210001 OEJNINDA (EST-DLH637/A4252-OERK-PASAM/0011F380-EDDF) Number of Chars: 12 Number of Words: 3" , 2: "Total Number of Direction(s): 2 1.) ZRB0002, LA_ATC_ZATC, HECAZATC, 21.08.2021 00:00:55 2.) CJC002, LA_NEW_CAPITAL_ZAZR, HECPZAZR, 21.08.2021 00:00:56 FF HECAZATC 210001 OEJNINDA (EST-DLH637/A4252-OERK-PASAM/0011F380-EDDF) Number of Chars: 12 Number of Words: 3"}

原方案失效原因

  1. 匹配字符串不全,原分隔符为Total Number of Direction(s),之前匹配的字符串少了(s)部分
  2. 没有处理行首尾的空白字符(换行、空格、制表符等),直接用原始行内容判断会导致匹配失败

实现代码

逐行读取大文件,内存占用低,适配7万+行的文本处理:

result = {}
current_key = 0
current_content = []
sep = "Total Number of Direction(s)"

# 替换为你的实际文件路径
with open("目标文件.txt", "r", encoding="utf-8") as f:
    for line in f:
        # 先清理行首尾空白再判断,避免匹配失败
        if line.strip().startswith(sep):
            # 存上一个单元的内容
            if current_content:
                result[current_key] = ' '.join([l.strip() for l in current_content])
                current_content = []
            current_key += 1
        current_content.append(line)
# 存最后一个单元的内容
if current_content:
    result[current_key] = ' '.join([l.strip() for l in current_content])

# 输出验证
print(result)

如果需要序列化存储为JSON文件,追加以下代码:

import json
with open("拆分结果.json", "w", encoding="utf-8") as f:
    json.dump(result, f, ensure_ascii=False, indent=2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:18:03