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

如何从DataFrame的text字段提取Item 5.02后的指定文本?

优化后的解决方案

以下是满足需求的代码实现,能完整提取Item 5.02之后到第一个终止术语之前的所有段落内容:

def extractPassage(text):
    # 按段落分割文本(保留原代码的段落分隔逻辑)
    paragraphs = text.split("\n\n")
    # 定义触发提取终止的术语集合
    stop_terms = {"Item 8.01", "Item 9.01", "SIGNATURES"}
    start_idx = None
    
    # 定位"Item 5.02"所在的段落
    for idx, para in enumerate(paragraphs):
        if para.startswith("Item 5.02"):
            start_idx = idx
            break
    
    # 处理未找到起始标记的情况
    if start_idx is None:
        return ""
        # 若需严格校验起始标记存在性,可取消下一行注释
        # raise Exception("No paragraph found starting with 'Item 5.02'")
    
    # 收集中间段落直到遇到第一个终止术语
    extracted_paragraphs = []
    for para in paragraphs[start_idx + 1 :]:
        # 检查当前段落是否以任一终止词开头
        if any(para.startswith(term) for term in stop_terms):
            break
        extracted_paragraphs.append(para)
    
    # 将收集的段落重新拼接为完整文本
    return "\n\n".join(extracted_paragraphs)

pd_00['important_text'] = pd_00['text'].apply(extractPassage)

核心优化说明

  • 全段落覆盖:不再仅提取Item 5.02后的第一段,而是持续收集段落直到遇到第一个终止术语,满足多段内容的提取需求
  • 多终止词支持:通过集合存储所有终止术语,用any()高效判断终止条件,覆盖所有指定的触发词
  • 边界场景处理:增加了未找到Item 5.02时的返回逻辑,可根据业务需求选择返回空字符串或抛出异常
  • 兼容性:保留原代码的\n\n段落分割逻辑,确保与原有文本格式匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:36:23