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

如何在Python中将非JSON格式数据转换为指定格式?

非标准配置文件转指定字典格式

输入与期望输出

输入文件格式

{
0/2 = [
"test_server_101:99904"
,"test_server_103:99907"
,"test_server_106:99906"
];
1/2 = [
"test_server_203:99906"
,"test_server_303:99902"
,"test_server_403:99906"
];
}

期望输出格式

{"test_server_101:99904": '0' ,"test_server_103:99907": '0' ,"test_server_106:99906": '0', "test_server_203:99906": '1' ,"test_server_303:99902": '1' ,"test_server_403:99906": '1' }

问题分析

输入并非标准JSON或Python字典,键无引号,结构使用自定义分隔符,直接用JSON解析或简单字符串分割易出错。原尝试代码存在未定义变量(如value_str、server_list),逻辑不完整,无法正确提取数据。

解决方案代码

server_data = {}

with open('file.txt', 'r') as f:
    # 读取内容并清理无关符号
    content = f.read().replace('{', '').replace('}', '').replace(';', '').strip()
    # 按空行拆分每个键值对块
    pairs = content.split('\n\n')
    
    for pair in pairs:
        if not pair:
            continue
        # 拆分键和值部分
        key_part, value_part = pair.split(' = ', 1)
        # 提取目标标记值(如从0/2中取0)
        target_key = key_part.split('/')[0]
        # 提取所有服务器地址:清理括号、引号、逗号后拆分
        servers = [s.strip().strip('",') for s in value_part.replace('[', '').replace(']', '').split('\n') if s.strip()]
        
        # 填充目标字典
        for server in servers:
            server_data[server] = target_key

# 拼接成要求的字符串格式
result = '{' + ', '.join([f'"{k}": \'{v}\'' for k, v in server_data.items()]) + '}'
print(result)

代码说明

  • 内容清理:先移除输入中的大括号、分号,简化后续处理流程;
  • 键值对拆分:通过空行分割每个X/Y = [...]结构块;
  • 标记值提取:从X/Y格式的键中拆分出X,作为对应服务器的标记值;
  • 服务器地址提取:移除值部分的方括号,按行拆分后清理引号、逗号,得到纯净的服务器地址;
  • 结果拼接:遍历字典,按指定格式拼接成最终字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:42:44