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

如何遍历带版本标记的文本字符串并生成分组关联数组

解决方案:按版本分组生成关联数组

我来帮你搞定这个字符串处理和数组构建的需求!核心思路是先按版本分隔符拆分字符串,再逐个处理每个版本下的条目,最终生成符合要求的关联数组(字典)。下面分别用PHP和Python给出实现方案:

PHP实现

$string = "———version1——— item1-result1 item2-result2 item3-result3 ———version2——— Item1-result4 Item2-result5 Item3-result6 ———version3——— Item1-result7 Item2-result8 Item3-result9";

// 按版本分隔符拆分,过滤掉拆分后产生的空元素
$versionBlocks = array_filter(explode('———', $string));

$resultArray = [];

foreach ($versionBlocks as $block) {
    // 拆分版本名称和条目内容(只按第一个空格拆分,避免条目里有空格的情况)
    list($versionName, $itemsStr) = explode(' ', trim($block), 2);
    
    // 拆分每个条目
    $items = explode(' ', $itemsStr);
    
    foreach ($items as $item) {
        // 拆分条目名和对应结果(只按第一个连字符拆分,避免结果里有连字符)
        list($itemName, $result) = explode('-', $item, 2);
        
        // 生成要求的键名:首字母大写的版本名 + 下划线 + 首字母大写的条目名
        $key = ucfirst($versionName) . '_' . ucfirst($itemName);
        $resultArray[$key] = $result;
    }
}

// 输出结果
print_r($resultArray);

运行后你会得到这样的结果:

Array
(
    [Version1_Item1] => result1
    [Version1_Item2] => result2
    [Version1_Item3] => result3
    [Version2_Item1] => result4
    [Version2_Item2] => result5
    [Version2_Item3] => result6
    [Version3_Item1] => result7
    [Version3_Item2] => result8
    [Version3_Item3] => result9
)

Python实现

string = "———version1——— item1-result1 item2-result2 item3-result3 ———version2——— Item1-result4 Item2-result5 Item3-result6 ———version3——— Item1-result7 Item2-result8 Item3-result9"

# 拆分版本块,过滤空内容
version_blocks = [block.strip() for block in string.split('———') if block.strip()]

result_dict = {}

for block in version_blocks:
    # 拆分版本名和条目字符串
    version_name, items_str = block.split(' ', 1)
    
    # 拆分每个条目
    items = items_str.split(' ')
    for item in items:
        # 拆分条目名和结果
        item_name, result = item.split('-', 1)
        
        # 生成符合要求的键名
        key = f"{version_name.capitalize()}_{item_name.capitalize()}"
        result_dict[key] = result

print(result_dict)

运行结果:

{
    'Version1_Item1': 'result1',
    'Version1_Item2': 'result2',
    'Version1_Item3': 'result3',
    'Version2_Item1': 'result4',
    'Version2_Item2': 'result5',
    'Version2_Item3': 'result6',
    'Version3_Item1': 'result7',
    'Version3_Item2': 'result8',
    'Version3_Item3': 'result9'
}

关键细节说明

  • 使用split('———')拆分版本块,确保每个版本的内容被单独提取;
  • 拆分条目时限制只按第一个空格/连字符拆分,避免条目或结果中包含空格/连字符导致错误;
  • 通过ucfirst()(PHP)或capitalize()(Python)统一键名的首字母大写格式,和你期望的示例格式保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:51:21