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

Python将文本文件转换为字典时如何跳过格式异常的行

解决方案

运行时报ValueError: too many values to unpack (expected 2)的核心原因是部分行按空白符分割后得到的元素数量不等于2,无法对应k、v两个变量。要实现自动跳过异常行的功能,修改后的代码如下:

# 建议用with上下文管理器自动管理文件资源,无需手动调用close
with open("C:\\path\\words.txt", 'r', encoding="utf-8") as f:
    res_dict = {}
    for line in f:
        line = line.strip()
        # 跳过空行
        if not line:
            continue
        parts = line.split()
        # 仅处理分割后刚好为2个元素的正常行,其余行直接跳过
        if len(parts) == 2:
            k, v = parts
            res_dict[k.strip()] = v.strip()

关键修改说明

  • 先将每行分割后的结果存入parts变量,通过len(parts) == 2判断行格式是否符合要求,不符合就直接跳过,不会触发解包报错
  • 新增了空行判断逻辑,避免空行也被当成异常行占用处理资源
  • 不要使用dict作为自定义变量名,避免覆盖Python内置的dict关键字导致后续调用字典相关功能时出现异常

如果需要统计跳过的异常行数量,可以扩展为以下版本:

with open("C:\\path\\words.txt", 'r', encoding="utf-8") as f:
    res_dict = {}
    skip_count = 0
    for line in f:
        line = line.strip()
        if not line:
            continue
        parts = line.split()
        if len(parts) == 2:
            k, v = parts
            res_dict[k.strip()] = v.strip()
        else:
            skip_count += 1
print(f"共跳过{skip_count}行格式异常的内容")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:48:03