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

如何将无线电传输的格式化字符串转换为Python字典?

无线电传输字符串转Python字典实现方案

输入格式示例

原始传输字符串:

message_string = 'Transmission\n variables \n  0.01 First variable\n  0.02 Second variable\n  0.03 Third variable \n More variables\n  0.03 Next variable\n  0.04 Another variable'

打印后显示内容:

Transmission
 variables
  0.01 First variable
  0.02 Second variable
  0.03 Third variable
 More variables
  0.03 Next variable
  0.04 Another variable

目标字典结构

需转换为层级式字典,外层键为分组名称,对应值为子字典(变量名映射到对应数值):

message_dict = {
    'variables': {
       'First variable': 0.01,
       'Second variable': 0.02,
        'Third variable': 0.03},
    'More variables': {
       'Next variable': 0.03,
       'Another variable': 0.04,
    } 
}

实现代码

以下是系统化处理且容错性强的Python实现:

def parse_transmission(message_str):
    message_dict = {}
    current_group = None
    # 分割行并清理无效内容
    lines = [line.strip() for line in message_str.split('\n') if line.strip()]
    
    for line in lines:
        # 跳过开头的Transmission标识行
        if line == 'Transmission':
            continue
        # 判断是否为分组行(非数值开头)
        if not line[0].isdigit() and line[0] != '.':
            current_group = line
            message_dict[current_group] = {}
            continue
        # 解析变量行:分割数值与变量名
        parts = line.split(maxsplit=1)
        if len(parts) != 2:
            continue
        try:
            value = float(parts[0])
            var_name = parts[1].strip()
            if current_group is not None:
                message_dict[current_group][var_name] = value
        except ValueError:
            # 数值转换失败时跳过该行
            continue
    return message_dict

# 测试示例
message_string = 'Transmission\n variables \n  0.01 First variable\n  0.02 Second variable\n  0.03 Third variable \n More variables\n  0.03 Next variable\n  0.04 Another variable'
result = parse_transmission(message_string)
import pprint
pprint.pprint(result)

关键特性说明

  • 行清理:自动过滤空行和首尾空格,避免无效内容干扰解析。
  • 分组自动初始化:识别到分组行时自动创建对应子字典,不会因分组缺失引发KeyError。
  • 容错处理:遇到格式错误的变量行、数值转换失败的行时直接跳过,程序不会抛出异常。
  • 兼容变量名含空格:用split(maxsplit=1)仅分割一次,确保变量名中的空格被完整保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:04:55