如何在Python中从一个字符串中删除一个字符

389 阅读13分钟

我们在Python中使用字符串来处理文本数据。在分析文本数据时,我们可能需要从数据中删除一些字符。在这篇文章中,我们将讨论在Python中从字符串中删除一个字符的不同方法。

在Python中使用For循环从一个字符串中删除一个字符

我们使用for循环来遍历一个可迭代对象的元素。我们将使用下面的方法,用Python中的for循环从一个字符串中删除一个字符。

  • 首先,我们将定义一个名为newStr 的空字符串来存储输出字符串。
  • 现在,我们将使用for循环遍历输入字符串的字符。
  • 在迭代过程中,如果我们发现有一个字符不等于我们想要删除的字符,我们将把这个字符追加到newStr
  • 如果我们找到需要删除的字符,我们就跳过它。

执行for循环后,我们将在变量newStr 中得到输出字符串。你可以在下面的例子中观察到这一点。

input_string = "Adcictcya"
char_to_remove = "c"
newStr = ""
for character in input_string:
    if character != char_to_remove:
        newStr += character

print("The input string is:", input_string)
print("The character to delete is:", char_to_remove)
print("The output string is:", newStr)

输出。

The input string is: Adcictcya
The character to delete is: c
The output string is: Aditya

在这里,你可以看到我们已经从输入字符串'Adcictcya'中删除了字符'c',产生了输出字符串'Aditya'。

在Python中使用列表理解法从一个字符串中删除一个字符

我们可以不使用for循环,而是使用列表理解来从Python的输入字符串中删除一个字符。为此,我们将使用以下方法。

  • 首先,我们将使用列表理解法创建一个输入字符串的字符列表,其中不包括我们想要删除的字符。我们将把这个列表存储在变量myList 中。
  • 在创建myList 之后,我们将定义一个名为newStr 的空字符串来存储输出字符串。
  • 现在,我们将使用for循环来迭代列表中的元素。
  • 在迭代过程中,我们将使用字符串连接法将 myList 中的每个元素连接到newStr
  • 执行for循环后,我们将在变量newStr 中得到所需的输出字符串。你可以在下面的例子中观察到这一点。
input_string = "Adcictcya"
char_to_remove = "c"
myList = [character for character in input_string if character != char_to_remove]
newStr = ""
for character in myList:
    newStr += character

print("The input string is:", input_string)
print("The character to delete is:", char_to_remove)
print("The output string is:", newStr)

输出。

The input string is: Adcictcya
The character to delete is: c
The output string is: Aditya

在创建了myList ,我们可以使用join() 方法而不是for循环来创建输出字符串。

join() 方法,当对一个分隔符字符串调用时,需要一个可迭代对象作为其输入参数。执行后,它返回一个字符串,其中可迭代对象中的所有元素都被分隔符隔开。

我们将使用下面的方法,在python中使用列表理解和 join() 方法从一个字符串中删除一个字符。

  • 首先,我们将使用列表理解来创建一个输入字符串的字符列表,在排除了我们想要删除的字符之后。我们将把这个列表存储在变量myList
  • 现在,我们将定义一个空字符串作为分隔符。
  • 在定义了分隔符之后,我们将对分隔符调用 join() 方法。这里,我们将把myList 作为输入参数传给 join() 方法。
  • 执行后,join() 方法将返回所需的字符串。

你可以在下面的例子中观察到这一点。

input_string = "Adcictcya"
char_to_remove = "c"
myList = [character for character in input_string if character != char_to_remove]
separator = ""
newStr = separator.join(myList)

print("The input string is:", input_string)
print("The character to delete is:", char_to_remove)
print("The output string is:", newStr)

输出。

The input string is: Adcictcya
The character to delete is: c
The output string is: Aditya

在Python中使用split()方法从一个字符串中删除一个字符

split() 方法是用来将一个字符串分割成子串。在一个字符串上调用时,它需要一个字符作为其输入参数。执行后,它返回一个在给定字符处分割的原始字符串的子串列表。

在 Python 中使用split() 方法从一个字符串中删除一个字符,我们将使用以下步骤。

  • 首先,我们将在输入字符串上调用split() 方法。在这里,我们将把需要从字符串中删除的字符作为一个输入参数传递。
  • 执行后,split() 方法将返回一个列表。我们将把这个列表存储在myList
  • 现在,我们将定义一个名为newStr 的空字符串来存储输出字符串。
  • 之后,我们将使用for循环来迭代列表中的元素。
  • 在迭代过程中,我们将使用字符串连接法将myList 中的每个元素连接到newStr

执行for循环后,我们将在变量myStr 中得到所需的输出字符串。你可以在下面的例子中观察到这一点。

input_string = "Adcictcya"
char_to_remove = "c"
myList = input_string.split(char_to_remove)
newStr = ""
for element in myList:
    newStr += element

print("The input string is:", input_string)
print("The character to delete is:", char_to_remove)
print("The output string is:", newStr)

输出。

The input string is: Adcictcya
The character to delete is: c
The output string is: Aditya

我们可以使用join() 方法,而不是使用for循环和字符串连接来创建来自myList 的输出字符串,方法如下。

  • 首先,我们将在输入字符串上调用split() 方法。在这里,我们将把需要从字符串中删除的字符作为一个输入参数传递。
  • 执行后,split() 方法将返回一个列表。我们将把这个列表存储在myList
  • 现在,我们将定义一个空字符串作为分隔符。
  • 在定义了分隔符之后,我们将对分隔符调用join() 方法。这里,我们将把myList 作为输入参数传给join() 方法。
  • 执行后, join() 方法将返回输出字符串。

你可以在下面的例子中观察整个过程。

input_string = "Adcictcya"
char_to_remove = "c"
myList = input_string.split(char_to_remove)
separator = ""
newStr = separator.join(myList)

print("The input string is:", input_string)
print("The character to delete is:", char_to_remove)
print("The output string is:", newStr)

输出。

The input string is: Adcictcya
The character to delete is: c
The output string is: Aditya

在Python中使用filter()函数从一个字符串中删除一个字符

filter() 函数被用来根据一个条件过滤一个可迭代对象的元素。filter() 函数将另一个函数作为其第一个输入参数,将一个可迭代对象作为其第二个输入参数。作为第一个输入参数的函数必须将可迭代对象的元素作为其输入,并为每个元素返回True或False。

执行后,filter() 函数返回一个迭代器,其中包含输入参数中给出的可迭代对象的所有元素,对于这些元素,第一个输入参数中给出的函数返回True。

为了使用过滤器函数从一个给定的字符串中删除一个字符,我们将使用以下步骤。

  • 首先,我们将定义一个函数myFun ,将给定字符串的字符作为其输入参数。如果输入参数中给定的字符是需要删除的字符,它将返回False。否则,它将返回True。
  • 在定义了myFun 之后,我们将把myFun 和输入字符串分别作为第一和第二输入参数传递给filter() 函数。
  • 执行后,过滤器函数返回一个包含字符串字符的迭代器。我们将使用list() 函数将该迭代器转换为一个列表。我们将把这个列表存储在myList
  • 现在,我们将定义一个名为newStr 的空字符串来存储输出字符串。
  • 之后,我们将使用for循环来迭代列表中的元素。
  • 在迭代过程中,我们将使用字符串连接法将myList 中的每个元素连接到newStr

执行for循环后,我们将在变量newStr 中得到所需的输出字符串。你可以在下面的例子中观察到这一点。

def myFun(character):
    char_to_remove = "c"
    return character != char_to_remove


input_string = "Adcictcya"
char_to_remove = "c"
filter_object = filter(myFun, input_string)
myList = list(filter_object)
newStr = ""
for element in myList:
    newStr += element

print("The input string is:", input_string)
print("The character to delete is:", char_to_remove)
print("The output string is:", newStr)

输出。

The input string is: Adcictcya
The character to delete is: c
The output string is: Aditya

你也可以使用join()方法来创建输出字符串,具体步骤如下。

  • 首先,我们将定义一个函数myFun,该函数以给定字符串的字符作为其输入参数。如果输入参数中给出的字符是需要删除的字符,它将返回False。否则,它将返回True。
  • 在定义了myFun 之后,我们将把myFun 和输入的字符串分别作为第一和第二输入参数传递给filter() 函数。
  • 执行后,过滤器函数返回一个包含字符串字符的迭代器。我们将使用list() 函数将该迭代器转换为一个列表。我们将把这个列表存储在myList
  • 现在,我们将定义一个空字符串作为分隔符。
  • 在定义了分隔符后,我们将对分隔符调用 join() 方法。这里,我们将把myList 作为输入参数传给 join() 方法。
  • 执行后,join() 方法将返回输出字符串。

你可以在下面的例子中观察整个过程。

def myFun(character):
    char_to_remove = "c"
    return character != char_to_remove


input_string = "Adcictcya"
char_to_remove = "c"
filter_object = filter(myFun, input_string)
myList = list(filter_object)
separator = ""
newStr = separator.join(myList)

print("The input string is:", input_string)
print("The character to delete is:", char_to_remove)
print("The output string is:", newStr)

输出。

The input string is: Adcictcya
The character to delete is: c
The output string is: Aditya

不要使用myFun ,你可以使用一个lambda表达式filter() 函数,如下图所示。

input_string = "Adcictcya"
char_to_remove = "c"
filter_object = filter(lambda character:character!=char_to_remove, input_string)
myList = list(filter_object)
separator = ""
newStr = separator.join(myList)

print("The input string is:", input_string)
print("The character to delete is:", char_to_remove)
print("The output string is:", newStr)

输出。

The input string is: Adcictcya
The character to delete is: c
The output string is: Aditya

在这里,lambda表达式完成了与前面代码中myFun 相同的任务。

在Python中使用replace()方法从一个字符串中删除一个字符

replace() 方法是用来在一个字符串中用另一个字符替换一个字符。你也可以使用 replace() 方法从一个字符串中删除一个字符。当在一个字符串上调用时,replace() 方法把需要替换的字符作为它的第一个参数,把新字符作为它的第二个输入参数。执行后,它返回修改后的字符串。

要使用replace() 方法从一个字符串中删除一个字符,我们将在原始字符串上调用replace() 方法。在这里,将把需要删除的字符作为第一个输入参数,把一个空字符串作为第二个输入参数传给replace() 方法。

执行后, replace() 方法将返回输出字符串。你可以在下面的例子中观察到这一点。

input_string = "Adcictcya"
char_to_remove = "c"
newStr = input_string.replace(char_to_remove, "")

print("The input string is:", input_string)
print("The character to delete is:", char_to_remove)
print("The output string is:", newStr)

输出。

The input string is: Adcictcya
The character to delete is: c
The output string is: Aditya

在Python中使用translate()方法从一个字符串中删除一个字符

translate() 方法也被用来替换字符串中的字符。translate() 方法,当对一个字符串调用时,需要一个翻译表作为其输入参数。执行后,它返回修改后的字符串。

为了从一个给定的字符串中删除一个字符,我们将首先制作一个翻译表。为此,我们可以使用maketrans() 方法。

maketrans() 方法,当在一个字符串上被调用时,需要一个字符串作为它的第一个参数,另一个字符串包含与第一个参数相同数量的字符,作为它的第二个输入参数。执行后,它返回一个翻译表。

  • 为了制作从给定字符串中删除一个字符的翻译表,我们将把需要删除的字符作为第一个输入参数,把一个空格字符作为第二个输入参数传递给maketrans() 方法。执行后,maketrans() 方法将返回一个翻译表,该翻译表将需要删除的字符映射为一个空白字符。
  • 现在,我们将在输入字符串上调用 translate() 方法,将翻译表作为其输入参数。执行translate() 方法后,我们将得到一个字符串,其中需要删除的字符被一个空白字符所取代。
  • 接下来,我们将使用split() 方法将translate() 方法返回的字符串分割成一个列表。我们将把这个列表存储在一个名为myList 的变量中。
  • 接下来,我们将定义一个名为newStr 的空字符串来存储输出字符串。
  • 之后,我们将使用for循环来迭代列表中的元素。
  • 在迭代过程中,我们将使用字符串连接法将myList 中的每个元素连接到newStr

执行for循环后,我们将在变量newStr 中得到所需的输出字符串。你可以在下面的例子中观察到这一点。

input_string = "Adcictcya"
char_to_remove = "c"
translation_table = input_string.maketrans(char_to_remove, " ")
tempStr = input_string.translate(translation_table)
myList = tempStr.split()
newStr = ""
for element in myList:
    newStr += element
print("The input string is:", input_string)
print("The character to delete is:", char_to_remove)
print("The output string is:", newStr)

输出。

The input string is: Adcictcya
The character to delete is: c
The output string is: Aditya

你可以使用join()方法从myList ,而不是使用for循环和字符串连接,来创建输出字符串。为此,你可以使用以下步骤。

  • 首先,将定义一个空字符串作为分隔符。
  • 在定义了分隔符后,我们将对分隔符调用join() 方法。这里,我们将把myList 作为输入参数传给join() 方法。
  • 执行后,join() 方法将返回输出字符串。

你可以在下面的例子中观察整个过程。

input_string = "Adcictcya"
char_to_remove = "c"
translation_table = input_string.maketrans(char_to_remove, " ")
tempStr = input_string.translate(translation_table)
myList = tempStr.split()
separator=""
newStr = separator.join(myList)
print("The input string is:", input_string)
print("The character to delete is:", char_to_remove)
print("The output string is:", newStr)

输出。

The input string is: Adcictcya
The character to delete is: c
The output string is: Aditya

使用translate() 方法的方法只适用于不含空白字符的字符串。所以,如果输入的字符串中有空白字符,你一定不能使用这种方法。

在Python中使用正则表达式从一个字符串中删除一个字符

正则表达式为我们提供了在Python中进行字符串操作的各种功能。你也可以使用正则表达式在Python中从一个字符串中删除一个字符。为此,我们将使用sub() 函数。

sub() 函数被用来替换字符串中的字符。它需要三个输入参数。第一个输入参数是需要被替换的字符。第二个参数是替换的字符。最后,第三个输入参数是原始字符串。执行后,sub() 函数返回新的字符串。

要使用sub() 函数从一个字符串中删除一个字符,我们将使用以下步骤。

  • sub() 函数的第一个参数中,我们将传递需要被删除的字符。
  • 我们将传递一个空字符串作为第二个输入参数,原始字符串作为第三个输入参数给sub() 函数。
  • 在执行sub() 函数后,我们将得到所需的输出字符串。

你可以在下面的例子中观察到这一点。

import re

input_string = "Adcictcya"
char_to_remove = "c"
newStr = re.sub(char_to_remove, "", input_string)
print("The input string is:", input_string)
print("The character to delete is:", char_to_remove)
print("The output string is:", newStr)

输出。

The input string is: Adcictcya
The character to delete is: c
The output string is: Aditya

结论

在这篇文章中,我们讨论了在Python中从一个字符串中删除一个字符的不同方法。在所有这些方法中,使用re.sub() 函数的方法和 replace() 方法是最有效的。因此,你应该使用这两种方法来从Python中的字符串中删除一个字符。