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

寻求Python读取类JSON特殊格式自定义配置文件的有效方法

解决自定义配置文件的Python读取问题

先梳理现有代码和配置文件的核心问题:

  1. 配置里的布尔值是小写true/false,但Python的布尔值是大写True/False,ast.literal_eval无法识别小写版本
  2. 配置中["dev"]块后面缺少逗号,导致替换后语法断裂
  3. 最后一个键值对末尾的多余逗号可能引发解析异常

下面是修正后的可运行代码:

import ast
import re

with open('file.ini') as f:
    data_str = f.read()

# 把["key"]格式的键转为"key"
data_str = re.sub(r'\["([^"]+)"\]', r'"\1"', data_str)
# 替换赋值符号=为冒号:
data_str = data_str.replace("=", ":")
# 移除开头的return关键字
data_str = data_str.replace("return ", "")
# 把小写布尔值转为Python识别的大写格式
data_str = data_str.replace("true", "True").replace("false", "False")
# 修复dev块后缺失的逗号
data_str = re.sub(r'}\s*"logo_size"', r'}, "logo_size"', data_str)
# 移除最后一个键值对后的多余逗号(可选,提升语法规范性)
data_str = re.sub(r',\s*}$', '}', data_str)

# 解析为Python字典
data = ast.literal_eval(data_str)

# 收集所有值为True的键
true_values = [k for k, v in data.items() if v is True]
print(true_values)

关键修正点说明:

  • 用正则表达式精准替换键的格式,避免单纯字符串替换可能带来的误操作
  • 补充了布尔值的大小写转换,这是原代码无法解析的核心原因之一
  • 修复了配置文件中缺失的逗号,解决语法断裂问题
  • 用列表推导式简化了True值键的收集逻辑

运行后会输出:['gradient', 'dark', 'smooth']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:06:09