Python – 替换字符串中的最后一个单词


在本文中,我们将学习如何用任何其他给定单词替换字符串结尾的单词(最后一个单词)。在进行字符串操作时,您可能见过这个问题。在这里,我们将看到用给定单词替换字符串中最后一个单词的各种方法。

让我们通过下面的例子来了解这一点:

string_txt = "This cat is running very Fast"

这里我们有一个包含句子的字符串 `string_txt`,我们想将最后一个单词“Fast”替换为“Slow”,以便生成的字符串如下所示。

string_txt = "This cat is running very Slow"

执行此操作的方法。

方法 1. 使用 `split()` 和 `join()` 函数。

示例

def replace_rear(string_txt, new_str):
   words = string_txt.split()
   words[-1] = new_str
   return ' '.join(words)
   
string_txt = "This cat is running very Fast"
print("String before replace: ", string_txt)
new_string = replace_rear(string_txt, "Slow")
print("String after replacing rear: ", new_string)

输出

String before replace: This cat is running very Fast 
String after replacing rear: This cat is running very Slow

解释

在上面的例子中,我们使用 `split()` 方法将字符串分割成单词列表。我们使用 `words[-1]` 访问最后一个单词,并使用 `new_str`(我们想用它替换最后一个单词的新单词)替换此单词。然后,我们使用 `join()` 方法将单词列表组合回字符串。

方法 2. 使用正则表达式。

示例

import re

def replace_rear(string_txt, new_str):
   return re.sub(r'\b\w+\b$', new_str, string_txt)
   
string_txt = "This cat is running very Fast"
print("String before replace: ", string_txt)
new_string = replace_rear(string_txt, "Slow")
print("String after replacing rear: ", new_string)

输出

String before replace: This cat is running very Fast 
String after replacing rear: This cat is running very Slow

解释

在上面的例子中,我们使用正则表达式的 `re.sub()` 方法执行正则表达式替换。我们定义了一个模式 `r'\b\w+\b$'`,它匹配字符串的最后一个单词,并将其替换为 `new_str`。

方法 3. 使用 `rsplit()` 函数。

示例

import re

def replace_rear(string_txt, new_str):
   words = string_txt.rsplit(None, 1)
   return words[0] + ' ' + new_str
   
string_txt = "This cat is running very Fast"
print("String before replace: ", string_txt)
new_string = replace_rear(string_txt, "Slow")
print("String after replacing rear: ", new_string)

输出

String before replace: This cat is running very Fast 
String after replacing rear: This cat is running very Slow

解释

在上面的例子中,我们使用了 `rsplit()` 方法,它允许我们从最右边开始分割字符串。因此,我们使用此方法从右边开始将字符串分割成单词。我们将分隔符定义为 `None`,并将分割次数定义为 1,因为我们只想替换最后一个单词。然后我们将分割后的字符串与 `new_str` 组合。因此,它最终会将单词替换为给定的新单词。

方法 4. 使用列表推导式。

示例

import re

def replace_rear(string_txt, new_str):
   words = string_txt.split()
   words = [new_str if i == len(words) - 1 else word for i, word in enumerate(words)]
   return ' '.join(words)
   
string_txt = "This cat is running very Fast"
print("String before replace: ", string_txt)
new_string = replace_rear(string_txt, "Slow")
print("String after replacing rear: ", new_string)

输出

String before replace: This cat is running very Fast 
String after replacing rear: This cat is running very Slow

解释

在上面的例子中,我们使用列表推导式遍历单词,并在到达最后一个索引 `len(words)-1` 时替换最后一个单词。然后我们使用 `join()` 函数将分割后的字符串组合起来。因此,我们的新字符串在结尾处包含替换后的单词。

方法 5. 使用字符串切片技术。

示例

import re

def replace_rear(string_txt, new_str):
   last_space_index = string_txt.rindex(' ')
   return string_txt[:last_space_index+1] + new_str
   
string_txt = "This cat is running very Fast"
print("String before replace: ", string_txt)
new_string = replace_rear(string_txt, "Slow")
print("String after replacing rear: ", new_string)

输出

String before replace: This cat is running very Fast 
String after replacing rear: This cat is running very Slow

解释

在上面的例子中,我们使用字符串切片技术将字符串的最后一个单词替换为新单词。我们首先使用 `rindex()` 查找字符串的最后一个空格,然后使用切片将字符串分割到最后一个索引,然后我们将其与空格组合并附加我们想要替换的新单词。

方法 6. 使用 `split()`、`maxsplit` 和 `join()` 方法。

示例

import re

def replace_rear(string_txt, new_str):
   words = string_txt.split(maxsplit=string_txt.count(' ') or None)
   words[-1] = new_str
   return ' '.join(words)
   
string_txt = "This cat is running very Fast"
print("String before replace: ", string_txt)
new_string = replace_rear(string_txt, "Slow")
print("String after replacing rear: ", new_string)

输出

String before replace: This cat is running very Fast 
String after replacing rear: This cat is running very Slow

解释

在上面的例子中,我们使用 `maxsplit=string_txt.count('') or None` 指定字符串分割将在最后一个空格处发生。然后在分割最后一个单词后,我们将最后一个单词替换为 `new_str`,并使用 `join()` 函数将分割后的字符串组合起来。

因此,我们了解了用新单词替换字符串最后一个单词的方法。我们看到了解决问题的各种方法,包括正则表达式、列表推导式、`split()` 和 `rsplit()` 函数。每种方法都有其独特的解决问题的方法,您可以根据自己的需要选择任何合适且简单的方法。

更新于:2023年10月3日

104 次浏览

开启您的 职业生涯

完成课程获得认证

开始学习
广告