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

如何将命令输出的字符串(str)转换为指定结构的字典?

我来帮你搞定这个转换问题,这里有两种可靠的Python实现方式,能精准把压缩的命令输出转换成你要的字典结构:

方法1:基于固定键列表的分割法

这种方法的核心思路是利用已知的键顺序来精准切割字符串,避免因为值里包含空格而拆分错误——毕竟你的Members字段里有带空格的多值内容,还有Comment字段是空值,这种方法能完美处理这些情况:

# 输入的压缩字符串
input_str = 'Group Name: STI IP: v4 Comment: Group Items: 2 Type: User-defined Members: "vm-1" "vm-2"'

# 定义目标字典的键,按输入字符串中的顺序排列
target_keys = ["Group Name", "IP", "Comment", "Group Items", "Type", "Members"]

result_dict = {}
current_position = 0

for idx, key in enumerate(target_keys):
    # 定位当前键在字符串中的起始位置
    key_start = input_str.find(key, current_position)
    if key_start == -1:
        result_dict[key] = ""
        continue
    
    # 找到键后面的冒号位置
    colon_pos = input_str.find(":", key_start + len(key))
    if colon_pos == -1:
        result_dict[key] = ""
        current_position = key_start + len(key)
        continue
    
    # 确定当前键对应值的结束位置:如果不是最后一个键,就以上一个键的起始位置为终点;否则取到字符串末尾
    if idx < len(target_keys) - 1:
        next_key = target_keys[idx + 1]
        next_key_start = input_str.find(next_key, colon_pos + 1)
        value = input_str[colon_pos + 1:next_key_start].strip()
    else:
        value = input_str[colon_pos + 1:].strip()
    
    result_dict[key] = value

print(result_dict)

运行后输出的结果就是你要的结构:

{'Group Name': 'STI', 'IP': 'v4', 'Comment': '', 'Group Items': '2', 'Type': 'User-defined', 'Members': '"vm-1" "vm-2"'}

方法2:正则表达式匹配法

如果输入字符串的键顺序是固定不变的,用正则表达式会更简洁,直接按固定模式匹配每个键值对:

import re

input_str = 'Group Name: STI IP: v4 Comment: Group Items: 2 Type: User-defined Members: "vm-1" "vm-2"'

# 编写匹配模式,注意最后一个Members用(.*)匹配到字符串末尾,避免截断多值内容
pattern = r'Group Name: (.*?) IP: (.*?) Comment: (.*?) Group Items: (.*?) Type: (.*?) Members: (.*)'
match_result = re.match(pattern, input_str)

if match_result:
    result_dict = {
        "Group Name": match_result.group(1).strip(),
        "IP": match_result.group(2).strip(),
        "Comment": match_result.group(3).strip(),
        "Group Items": match_result.group(4).strip(),
        "Type": match_result.group(5).strip(),
        "Members": match_result.group(6).strip()
    }

print(result_dict)

这种方法代码量更少,适合键顺序固定的场景,同样能输出符合要求的字典。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:03:15