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

Python如何查找字符串中距离基准词最近的ticker及对应周边文本

实现代码
import re

def get_identifier(ticker: str, base_word: str, content: str, extra_char_num: int = 0) -> str:
    # 匹配所有基准词位置,如需区分大小写可删除re.IGNORECASE参数
    base_match_list = list(re.finditer(re.escape(base_word), content, re.IGNORECASE))
    if not base_match_list:
        return ""
    # 存在多个基准词时默认取第一个,可按需调整遍历逻辑
    target_base = base_match_list[0]
    base_start_idx, base_end_idx = target_base.span()

    # 匹配所有ticker位置
    ticker_match_list = list(re.finditer(re.escape(ticker), content, re.IGNORECASE))
    if not ticker_match_list:
        return ""
    
    # 计算距离筛选最近的ticker
    nearest_ticker = min(ticker_match_list, key=lambda match: abs(match.start() - base_start_idx))
    ticker_start_idx = nearest_ticker.start()

    # 计算提取范围,extra_char_num为基准词前后额外提取的字符长度
    extract_start = max(0, ticker_start_idx - extra_char_num)
    extract_end = min(len(content), base_end_idx + extra_char_num)

    return content[extract_start:extract_end].strip()
使用示例
ticker = 'TRBCX'
base_word = 'goal'
content = 'TRBCX fund is up 2% today. TRBCX investment goal is to beat the S&P 500. TRBCX is managed by investment manager John Smith'

# 提取最近ticker到基准词之间的内容
identifier = get_identifier(ticker, base_word, content)
print(identifier)
# 输出:TRBCX investment goal

# 前后额外各取10个字符,获取周边完整文本
identifier = get_identifier(ticker, base_word, content, extra_char_num=10)
print(identifier)
# 输出:today. TRBCX investment goal is to beat
补充说明
  • 如需按词数而非字符数扩展提取范围,可先将文本按空格分词后再计算起止索引,逻辑一致
  • 存在多个基准词时,可遍历base_match_list批量生成对应的identifier
  • 默认不区分大小写匹配ticker和基准词,如有严格匹配需求删除re.IGNORECASE参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:15:09