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

将TXT表格数据转换为Python字典时set不可下标报错如何解决

问题解决方法

错误根因

你初始化fileInfo的写法生成的是Python集合(set)而非字典:

# 这行代码生成的是集合,不是字典
fileInfo = {"Document", "Description", "Lng"}

集合没有键值对结构,不支持下标访问(也就是fileInfo["Document"]这种写法),所以会抛出TypeError: 'set' object is not subscriptable错误。

修复步骤

1. 修正字典初始化

你需要将每个键的初始值设为空列表,才能后续往里面追加数据:

fileInfo = {"Document": [], "Description": [], "Lng": []}

2. 优化处理逻辑(可选,无需生成临时清理文件)

你可以直接在读取原文件的过程中过滤有效行、解析数据,不需要额外生成CLEANED.txt文件,完整示例代码如下:

fileInfo = {"Document": [], "Description": [], "Lng": []}

with open("你的文件路径.txt", 'r', encoding='utf-8') as fp:
    lines = fp.readlines()
    # 遍历所有行,只处理包含|符号的有效数据行
    for line in lines:
        line = line.strip()
        # 表格行的特征是首尾都是|
        if line.startswith("|") and line.endswith("|"):
            # 拆分后去掉首尾空元素,每个字段清理前后空格
            parts = [p.strip() for p in line.split("|") if p.strip()]
            # 跳过表头行
            if parts[0] == "Document":
                continue
            # 往对应列表追加数据
            if len(parts) == 3:
                fileInfo["Document"].append(parts[0])
                fileInfo["Description"].append(parts[1])
                fileInfo["Lng"].append(parts[2])

print(fileInfo)

运行后输出的结构和你预期一致:

{
    "Document": ["VLX82304", "VLX82340", "VLX98234"],
    "Description": ["Unit 523435", "Self  339304", "Can  522018"],
    "Lng": ["EN", "EN", "EN"]
}

3. 保留原清理文件逻辑的修复方案

如果你不想修改原有流程,只需要把初始化fileInfo的代码改成上述字典结构即可,后续的append操作就能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:39:03