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

如何从连续字符串中匹配list1元素并提取生成list2?

问题描述

需要实现逻辑:从给定的连续字符串中识别出属于list1的元素,并将这些元素按顺序添加到list2中。

示例信息:

  • 目标元素列表:list1 = ["NORTH", "SOUTH", "EAST", "WEST"]
  • 待处理连续字符串:string = "NORTHSOUTHWESTEASTWEST"
  • 期望输出结果:list2 = ["NORTH", "SOUTH", "WEST", "EAST", "WEST"]
解决方案

以下是Python实现代码,核心思路是从字符串起始位置开始,逐个尝试匹配list1中的元素,匹配成功后移动指针继续处理剩余字符串:

list1 = ["NORTH", "SOUTH", "EAST", "WEST"]
string = "NORTHSOUTHWESTEASTWEST"
list2 = []

current_pos = 0
total_length = len(string)

while current_pos < total_length:
    match_found = False
    # 遍历所有目标元素,尝试匹配当前位置的子串
    for direction in list1:
        dir_length = len(direction)
        # 检查剩余长度足够匹配,且子串与目标元素一致
        if current_pos + dir_length <= total_length and string[current_pos:current_pos+dir_length] == direction:
            list2.append(direction)
            current_pos += dir_length
            match_found = True
            break
    # 若没有找到匹配项,可根据需求调整处理逻辑,此处直接抛出错误
    if not match_found:
        raise ValueError(f"无法匹配的子串:{string[current_pos:]}")

print(list2)
# 输出结果:['NORTH', 'SOUTH', 'WEST', 'EAST', 'WEST']

逻辑说明

  1. 初始化指针current_pos从字符串起始位置(0)开始;
  2. 循环处理直到指针遍历完整个字符串;
  3. 对每个位置,依次尝试匹配list1中的元素,一旦匹配成功就将元素加入list2,并把指针移动到匹配完成后的位置;
  4. 如果遇到无法匹配的子串,抛出错误提示(可根据实际需求修改为跳过或其他处理方式)。

内容的提问来源于stack exchange,提问作者Hàm Louis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:33:12