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

Python 3.6:如何实现字符串中指定单词的互换功能

改造字符串单词互换函数(忽略大小写)

原字符交换函数

原来的函数用于交换字符串中指定索引的字符:

def swapping(a, b, c):
    x = list(a)
    x[b], x[c] = x[c], x[b]
    return ''.join(x)

需求说明

需要将该函数改造为忽略大小写的指定单词互换功能:

  • 互换字符串中所有匹配word1和word2的单词(忽略大小写)
  • 替换后的单词统一使用大写形式(如示例所示)
  • 保留原字符串中的标点、空格等非单词内容

改造后的解决方案

我们可以使用正则表达式来精准匹配单词(兼顾单词边界和末尾标点),通过回调函数实现互换逻辑:

import re

def swapping(text, word1, word2):
    # 处理单个匹配项的回调函数
    def replace_match(match):
        current_word = match.group(0)
        # 统一转小写判断匹配关系,实现忽略大小写
        if current_word.lower() == word1.lower():
            return word2.upper()
        elif current_word.lower() == word2.lower():
            return word1.upper()
        # 不匹配的单词直接返回原内容
        return current_word
    
    # 正则规则:匹配完整单词,包含末尾可能的标点(如句号、逗号)
    word_pattern = re.compile(r'\b\w+[.,!?]*\b')
    return word_pattern.sub(replace_match, text)

调用示例

# 示例1
print(swapping("Boys and girls left the school.", "boys", "girls"))
# 输出: "GIRLS and BOYS left the school."

# 示例2
print(swapping("Boys and girls left the school.", "GIRLS", "bOYS"))
# 输出: "GIRLS and BOYS left the school."

逻辑说明

  1. 精准匹配:正则r'\b\w+[.,!?]*\b'会匹配完整的单词单元,包括单词末尾的标点符号,避免误匹配单词片段。
  2. 忽略大小写判断:通过lower()统一转换为小写进行比较,不管输入的目标单词大小写如何,都能正确匹配原字符串中的对应单词。
  3. 互换替换:匹配word1的单词替换为word2的大写形式,匹配word2的单词替换为word1的大写形式,其他内容保持原样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:45:54