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

如何基于状态列表分割目标字符串?技术实现问询

解决方案:提取并分割匹配的状态字段

没问题,我来帮你实现这个需求!核心思路是先处理空字符串的边界情况,再遍历状态列表匹配目标字段,最后完成分割/提取操作。以下是具体的Python实现和说明:

步骤说明

  1. 处理空字符串:先检查目标字段snip[0][3]是否为空,避免后续逻辑报错
  2. 匹配状态:遍历你的状态列表,检查每个状态是否存在于目标字段中
  3. 分割字符串:提取所有匹配的状态,可选保留剩余未匹配的文本部分

完整代码实现

def extract_and_split_statuses(snip, status_list):
    # 容错处理:确保snip格式正确,取出目标字段
    target_str = ""
    if snip and len(snip) > 0 and len(snip[0]) > 3:
        target_str = snip[0][3].strip()
    
    # 处理空字符串情况
    if not target_str:
        return [], None  # 返回空匹配列表和None表示无剩余内容
    
    # 收集所有匹配的状态
    matched_statuses = []
    remaining_text = target_str
    
    for status in status_list:
        if status in remaining_text:
            matched_statuses.append(status)
            # 从剩余文本中移除已匹配的状态,避免重复匹配(可选)
            remaining_text = remaining_text.replace(status, "").strip()
    
    # 如果剩余文本为空,返回None
    remaining_text = remaining_text if remaining_text else None
    return matched_statuses, remaining_text

# 你的状态列表
statuses = ['421-A','421-G','ARTICLE 11','ARTICLES 14 & 15', 'COOP/CONDO PLAN FILE','EVICT COOP/CONDO', 'GARDEN COMPLEX','J-51','NON-EVICT COOP/CONDO','ROOMING HOUSE','SEC 608']

# 测试示例1:包含多个匹配状态
snip1 = [('11201', '131', 'MULTIPLE DWELLING A', '421-A ARTICLE 11', '291', '45')]
matched1, remaining1 = extract_and_split_statuses(snip1, statuses)
print("匹配的状态:", matched1)  # 输出: ['421-A', 'ARTICLE 11']
print("剩余文本:", remaining1)  # 输出: None

# 测试示例2:空字符串字段
snip2 = [('11202', '132', 'MULTIPLE DWELLING B', '', '300', '50')]
matched2, remaining2 = extract_and_split_statuses(snip2, statuses)
print("匹配的状态:", matched2)  # 输出: []
print("剩余文本:", remaining2)  # 输出: None

# 测试示例3:部分匹配+剩余文本
snip3 = [('11203', '133', 'MULTIPLE DWELLING C', 'EVICT COOP/CONDO - PENDING', '350', '60')]
matched3, remaining3 = extract_and_split_statuses(snip3, statuses)
print("匹配的状态:", matched3)  # 输出: ['EVICT COOP/CONDO']
print("剩余文本:", remaining3)  # 输出: '- PENDING'

代码亮点

  • 容错处理:即使snip格式不符合预期(比如为空、字段不足),也不会抛出错误
  • 灵活分割:既可以提取所有匹配的状态,也能保留未匹配的剩余文本
  • 适配带空格的状态:直接用in操作符就能正确识别带空格的状态(比如ARTICLE 11)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:13:49