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

如何在Python中移除特定单词后紧随单词之后的所有内容?

解决方案

要实现保留目标单词(如"string")及其后紧随的第一个单词、截断后续所有内容的需求,有两种简单的实现方式:

方法一:正则表达式匹配

利用正则表达式精准捕获目标单词和其后的第一个单词,替换掉后续内容,适合快速批量处理:

import re

# 待处理字符串列表
raw_strings = [
    "This is a beautiful string 1 - written by a dog",
    "This is a beautiful string 2 written by a fly",
    "This is a beautiful string 3 ewh"
]

target_word = "string"
# 构建正则模式:捕获目标单词+空格+第一个非空白序列,匹配后续所有内容
pattern = re.compile(rf'({re.escape(target_word)}\s+\S+).*')

# 批量处理字符串
processed_strings = [pattern.sub(r'\1', s) for s in raw_strings]

# 输出结果
for line in processed_strings:
    print(line)

re.escape(target_word) 是为了避免目标单词包含正则特殊字符(如.、*)时出现匹配错误,增强代码通用性。

方法二:字符串分割处理

如果对正则不熟悉,也可以用字符串分割的方式实现,逻辑更直观:

raw_strings = [
    "This is a beautiful string 1 - written by a dog",
    "This is a beautiful string 2 written by a fly",
    "This is a beautiful string 3 ewh"
]

target_word = "string"
processed_strings = []

for s in raw_strings:
    # 按目标单词分割成两部分,只分割一次
    split_parts = s.split(target_word, 1)
    if len(split_parts) == 2:
        # 提取目标单词后的第一个单词
        first_word_after = split_parts[1].strip().split(maxsplit=1)[0]
        # 拼接新字符串
        new_string = f"{split_parts[0]}{target_word} {first_word_after}"
        processed_strings.append(new_string)
    else:
        # 无目标单词时保留原字符串
        processed_strings.append(s)

# 输出结果
for line in processed_strings:
    print(line)

为什么rsplit()达不到效果?

rsplit()是从字符串右侧开始分割,无法精准定位第一个出现的目标单词,而且它只能按指定分隔符拆分,无法直接提取目标单词后的第一个单词并截断后续内容,因此不符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:40:27