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

Python如何查找文本中含指定字符的单词并提取完整目标词

Python提取字符串中包含指定子串的完整单词实现方法

核心思路

不用基于find()返回的索引手动计算单词边界,流程非常简单:

  • 先把原字符串拆分为独立的单词列表
  • 遍历单词列表,筛选出包含目标子串的项即可

基础实现(适配纯文本、单词间用空白分隔的场景)

直接用字符串内置的split()方法拆分单词,配合列表推导式筛选,代码如下:

# 待处理原始字符串
text = "I WANT TO EAT cheese in zeven11"
# 要匹配的目标子串
target = "11"

# 拆分+筛选
match_words = [word for word in text.split() if target in word]

print(match_words)
# 运行输出:['zeven11']

如果需要匹配你提到的预期输出格式Zeven11,只需要对匹配到的单词调用capitalize()方法做首字母大写转换即可:

match_words = [word.capitalize() for word in text.split() if target in word]
# 输出结果为['Zeven11']

进阶适配(文本带标点符号的场景)

如果待处理文本里的单词可能附带逗号、句号、感叹号这类标点,用split()会把标点算进单词里,这时候可以用re模块基于单词边界做精准拆分:

import re

text = "I WANT TO EAT cheese in zeven11, and then go home."
target = "11"
# 用正则匹配所有独立单词,自动忽略前后附着的标点
match_words = [word for word in re.findall(r"\b\w+\b", text) if target in word]

print(match_words)
# 运行输出:['zeven11']

为什么find()方法不适合直接做这个需求

find()本身只会返回目标子串在字符串中的起始索引,如果你硬要基于索引取完整单词,需要从匹配位置分别向左、向右查找最近的空白字符或者字符串起止位置,再做切片提取,逻辑冗余且容易在多空格、标点、开头/结尾单词这类边界场景出错,没有必要。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:00:49