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

如何以指定字符串为起始值从长文本中提取多个子字符串

高效提取指定单词开头的限定长度子字符串

用正则表达式的re.finditer方法可以高效解决这个问题,它能快速定位所有目标单词的起始位置,再根据字符限制截取对应子串,比手动遍历效率高得多。

代码示例

import re

# 示例长文本
long_text = "apples can be red, apples can also be green, apple is a common fruit"
target_word = "apple"
char_limit = 10  # 限定提取的字符数量

# 转义目标单词,避免正则特殊字符干扰匹配
pattern = re.escape(target_word)
# 找到所有匹配的位置
matches = re.finditer(pattern, long_text)

# 提取符合要求的子字符串
result = []
for match in matches:
    start_pos = match.start()
    # 计算结束位置,超出文本长度时自动取到末尾
    end_pos = start_pos + char_limit
    substring = long_text[start_pos:end_pos]
    result.append(substring)

print(result)

说明

  • re.escape(target_word):处理目标单词中的正则特殊字符(比如.、*),确保精准匹配原单词。
  • re.finditer:返回所有匹配的迭代器,每个元素包含匹配的起始位置,不会只返回第一个匹配项。
  • 截取逻辑:从每个匹配的起始位置开始,取char_limit个字符,若文本剩余长度不足则自动截断到文本末尾。

运行上述代码,输出结果为:

['apples can b', 'apples can a', 'apple is a f']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:41:27