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

如何解析含嵌套结构的特殊格式.ini配置文件?

解析非标准格式的INI文件

问题分析

你遇到的是非标准格式的INI文件,标准INI仅支持[Section]下的Key=Value键值对,而这里的Sensors值是嵌套的类字典结构,configparser无法直接解析这种嵌套内容,只能读取为字符串,必须手动处理这个字符串。

解决思路

核心是将读取到的字符串转换为合法的Python字典,再通过字典语法访问嵌套字段。推荐用ast.literal_eval(比eval更安全),步骤如下:

  1. 清理字符串中多余的括号(外层的{ (和) }是冗余的)
  2. 将Key=Value格式转换为Python字典的"Key": Value格式
  3. 用ast.literal_eval解析处理后的字符串为字典

代码实现

import configparser
import ast
import re

# 读取INI文件
config = configparser.ConfigParser()
config.read("my_config.ini")
sensor_raw_str = config["Sensors"]["Sensors"]

# 1. 移除多余的外层括号
cleaned_str = sensor_raw_str.replace("{ (", "{").replace(")}", "}")

# 2. 将Key=Value转换为合法的字典键值对格式
def format_key_value(match):
    key = match.group(1)
    value = match.group(2)
    # 区分数值和字符串类型,字符串加引号
    if value.isdigit():
        return f'"{key}": {value}'
    else:
        return f'"{key}": "{value}"'

# 正则匹配所有Key=Value行
pattern = re.compile(r'(\w+)=(\w+)')
processed_dict_str = pattern.sub(format_key_value, cleaned_str)

# 3. 安全解析为Python字典
sensor_dict = ast.literal_eval(processed_dict_str)

# 访问目标字段
sensor_type = sensor_dict["0"]["SensorType"]
print(sensor_type)  # 输出: Camera

注意事项

  • 如果配置中有更复杂的结构(比如多传感器、字符串含特殊字符),需要调整正则表达式或字符串处理逻辑
  • 始终用ast.literal_eval而非eval,避免执行恶意代码风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:22:34