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

Python新手求助:如何解析含内嵌数组的文本为键值对?

用Python处理含内嵌数组的文本为键值对

针对你提供的文本格式,核心难点是每行里[]包裹的内嵌内容不能直接用逗号拆分,这里提供一个简单的实现方案:

处理思路

  1. 用正则表达式匹配每行的各个字段,避开内嵌[]里的逗号
  2. 单独解析[]内的DNS和IP条目,拆分成键值对
  3. 组合成你需要的字典结构(支持嵌套或平级两种形式)

代码实现

import re

# 匹配每行结构的正则,精准拆分出各个字段
line_pattern = re.compile(r'^([^,]+),([^,]+),([^,]+),\[(.*?)\],\[(.*?)\]$')

processed_data = []

# 读取目标文本文件(替换成你的文件名)
with open('your_file.txt', 'r', encoding='utf-8') as f:
    for line in f:
        line = line.strip()
        if not line:  # 跳过空行
            continue
        
        # 匹配当前行的所有字段
        match_result = line_pattern.match(line)
        if not match_result:
            print(f"跳过格式错误的行:{line}")
            continue
        
        name, algo, key_len_str, dns_content, ip_content = match_result.groups()
        
        # 解析DNS条目为字典
        dns_dict = {}
        for dns_item in dns_content.split(','):
            key, val = dns_item.split(':', 1)
            dns_dict[key] = val
        
        # 解析IP条目为字典
        ip_dict = {}
        for ip_item in ip_content.split(','):
            key, val = ip_item.split(':', 1)
            ip_dict[key] = val
        
        # 方式1:嵌套结构(推荐,层级清晰)
        entry = {
            '名称': name,
            '加密算法': algo,
            '密钥长度': int(key_len_str),
            'DNS记录': dns_dict,
            'IP记录': ip_dict
        }
        
        # 方式2:平级结构(所有键放在同一层级)
        # entry = {
        #     '名称': name,
        #     '加密算法': algo,
        #     '密钥长度': int(key_len_str)
        # }
        # entry.update(dns_dict)
        # entry.update(ip_dict)
        
        processed_data.append(entry)

# 输出处理后的结果
for idx, item in enumerate(processed_data, 1):
    print(f"第{idx}条数据:")
    print(item)
    print('---')

说明

  • 把代码里的your_file.txt替换成你实际的文件名
  • 两种结构形式可以按需选择,嵌套结构更易区分不同类型的字段
  • 代码会自动跳过空行和格式错误的行,避免程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:12:39