使用 Python 从字符串中删除子字符串列表

pythonserver side programmingprogramming

Python 是一款非常有用的软件,世界各地的人们都使用它来根据个人需要执行许多不同的功能。它用于许多不同的目的,例如数据科学、机器学习、Web 开发以及自动化执行不同的流程。它具有许多不同的功能,可帮助我们执行上述任务,但由于 Python 中存在如此多的功能,用户也必须面对问题。用户面临的一个常见问题是从字符串中删除子字符串。很多时候,还需要从一个主字符串中删除多个子字符串。在本文中,我们将学习如何使用 Python 从字符串中删除子字符串列表。

删除子字符串的不同方法

替换函数

这是一种从字符串中删除子字符串的非常简单的方法。借助 replace() 函数并简单定义要保留的字符串和要删除的子字符串,我们可以轻松删除不需要的子字符串。我们举个例子来说明一下:-

def extra_substrings(main_string, remove_substrings): #定义字符串和子字符串的格式
    for remove_substring in remove_substrings:
        main_string = main_string.replace(remove_substring, "")  #对于任何包含子字符串的子字符串
    return main_string

示例

def extra_substrings(main_string, remove_substrings): #定义字符串和子字符串的格式
    for remove_substring in remove_substrings:
        main_string = main_string.replace(remove_substring, "")  #对于任何包含子字符串的子字符串
    return main_string
whole_string = "Hello, everyone! This is a extra string just for example."
remove_substrings = ["everyone", "extra", "just"] #这些是要借助 replace() 函数删除的子字符串
new_String = extra_substrings(whole_string, remove_substrings) #extra_substring 检查每个定义的子字符串并将其从字符串中删除
print(new_String)

输出

上述代码的输出如下:

Hello, ! This is a  string  for example.  

re 模块

在此过程中,将使用 re 模块从主文本中取出子字符串。Python 使用 re 模块来处理正则表达式。为了定义子字符串并将其从字符串中删除,我们将使用 re 模块的 re.sub() 方法设计一个模式。此方法的代码如下:

import re #不要忘记导入 re,否则代码将无法正确运行

def extra_substrings(main_string,remove_substrings): #extra_substring 将字符串和子字符串作为参数
    pattern = "|".join(map(re.escape, remove_substrings)) #| 将充当定义的模式中的分隔符
    return re.sub(pattern, "", main_string) # re.sub() 函数将用于将模式中的所有子字符串替换为空位

示例

让我们以上述代码为例,使其更加清晰:

import re #不要忘记导入 re,否则代码将无法正确运行

def extra_substrings(main_string,remove_substrings): #extra_substring 将字符串和子字符串作为参数
    pattern = "|".join(map(re.escape, remove_substrings)) #| 将充当定义的模式中的分隔符
    return re.sub(pattern, "", main_string) # re.sub() 函数将用于将模式中的所有子字符串替换为空位
whole_string = "Hello, everyone! This is a extra string just for example."
remove_substrings = ["everyone", "extra", "just"]

new_string = extra_substrings(whole_string, remove_substrings) #该参数将删除子字符串中定义的所有单词
print(new_string)

输出

上述代码的输出将如下所示:

你好!例如,这是一个字符串。

列表推导式

另一种非常简单的从主字符串中删除子字符串的技术就是这个。我们可以在定义子字符串之前为函数提供字符串和子字符串参数。列表推导式将检查主文本的每个组成部分,并消除代码中找到的任何子字符串。此方法的代码如下:

def extra_substrings(main_string, remove_substrings): 
    words = main_string.split()  # 将字符串拆分成单词
    useful_words = [word for word in words if all(sub not in word for sub in remove_substrings)]   #借助all()函数,列表推导将检查字符串中的所有元素,并删除所有定义的子字符串
    return ' '.join(useful_words)

示例

让我们使用上面的代码举个例子来更清楚一点:

def extra_substrings(main_string, remove_substrings):
    words = main_string.split() # 将字符串拆分成单词
    useful_words = [word for word in words if all(sub not in word for sub in remove_substrings)]   #借助all()函数,列表推导将检查字符串中的所有元素,并删除所有定义的子字符串
    return ' '.join(useful_words)
whole_string = "Hello, everyone! This is a extra string just for example."
remove_substring = ["everyone", "extra", "just"]

new_string = extra_substrings(whole_string, remove_substring)
print(new_string)

输出

上述代码的输出如下:

您好!这是一个字符串示例。

翻译函数

我们将在此方法中使用翻译函数从主字符串中删除子字符串。翻译函数返回翻译表中提到的指定元素所在的字符串,并将其替换为空字符串。创建翻译表以删除子字符串的代码如下:

def remove_substrings_translate(main_string, remove_substrings):
    Translation_table = str.maketrans("", "", "".join(remove_substrings)) #str.maketrans()用于创建翻译表
    return main_string.translate(translation_table) #str.translate()用于借助翻译表删除子字符串

示例

让我们用上面的代码举个例子,以便更清楚地理解它:

def remove_substrings_translate(main_string, remove_substrings):
    Translation_table = str.maketrans("", "", "".join(remove_substrings)) #str.maketrans() 用于创建翻译表
    return main_string.translate(translation_table) #str.translate() 用于借助翻译表删除子字符串
whole_string = "Hello, world! This is a sample string."
remove_substrings = ["world", "sample"]
new_string = remove_substrings_translate(whole_string, remove_substrings)
print(new_string)

输出

上述代码的输出如下:

H, ! Thi i   ting.

带函数的 re 模块

这是一种复杂的方法,用于用户需要更多灵活性的情况。我们将使用 re.sub() 函数并创建另一个个性化的自定义函数,该函数允许我们决定要替换的子字符串。使用 re.sub() 和自定义函数的代码如下:

import re #不要忘记导入 re,否则可能会发生错误

def extra_substrings(main_string, remove_substrings): #定义参数
    pattern = "|".join(map(re.escape, remove_substrings))
    
    def replacement(match): #自定义函数用空字符串定义子字符串
        return ""
    
    return re.sub(pattern, replacement, main_string)  #re.sub() 删除自定义函数 replacement() 定义的子字符串

示例

我们以上面的代码为例来更清楚地理解它:

import re #不要忘记导入 re,否则可能会出错

def extra_substrings(main_string, remove_substrings): #定义参数
    pattern = "|".join(map(re.escape, remove_substrings))
    
    def replacement(match): #自定义函数用空字符串定义子字符串
        return ""
    
    return re.sub(pattern, replacement, main_string)  #re.sub() 删除由自定义函数 replacement() 定义的子字符串
whole_string = "Hello, everyone! This is a extra string just for example."
remove_substrings = ["everyone", "extra", "just"]

new_string = extra_substrings(whole_string, remove_substrings)
print(new_string)

输出

上述代码的输出如下:

Hello, ! This is a string for example.

结论

如果用户没有遵循正确的方法,从字符串中删除子字符串的过程可能会多次令人沮丧。这是用户经常遇到的问题,因此必须遵循正确的步骤。可以参考上述文章中给出的不同方法,使用 python 从主字符串中删除子字符串。


相关文章