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

Python使用ast.literal_eval读类字典文件报InvalidSyntax错误如何解决

语法错误原因与修复方案

错误原因

ast.literal_eval要求输入内容必须是完全符合Python语法的字面量表达式,你当前的类字典字符串存在3个语法问题:

  • 所有字典键(如Attribute_1、created_by等)都没有加引号,不符合Python字典的语法规则
  • 部分值(如Value1)没有加引号,会被识别为未定义变量
  • 时间值2021-06-10T15:06:41.846-00:00没有加引号,Python无法直接识别为合法字面量

修复思路

先通过正则表达式预处理每行字符串,将其转换为标准JSON格式,再用json模块完成解析,不需要修改源文件。

完整修复代码

import re
import json

# 预处理正则规则
QUOTE_KEY_PATTERN = re.compile(r'(\w+):')
QUOTE_VALUE_PATTERN = re.compile(r':(\w+)([,}])')
QUOTE_DATE_PATTERN = re.compile(r'(\d{4}-\d{2}-\d{2}T[\d:.]+-\d{2}:\d{2})')

with open('file_name.txt','r') as file:
    for line in file:
        line = line.strip()
        if not line:
            continue
        # 预处理字符串为合法JSON格式
        line = QUOTE_KEY_PATTERN.sub(r'"\1":', line)
        line = QUOTE_VALUE_PATTERN.sub(r':"\1"\2', line)
        line = QUOTE_DATE_PATTERN.sub(r'"\1"', line)
        # 解析JSON
        data = json.loads(line)
        # 提取Attribute_2的值
        print(data["Attribute_2"])

额外注意点

原代码中print(dict[2])的写法是错误的,Python字典需要通过键名索引,不能用位置下标,应改为通过Attribute_2键名取值;同时不要使用dict作为变量名,会覆盖Python内置的字典类型。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 10:39:03