【问题标题】:Recreating the strip() method using list comprehensions but output returns unexpected result使用列表推导重新创建 strip() 方法,但输出返回意外结果
【发布时间】:2021-11-18 12:18:34
【问题描述】:

为了好玩,我正在尝试在 python 中“重新创建”str.split() 方法。

def ourveryownstrip(string, character):
    newString = [n for n in string if n != character]
    return newString

print("The string is", ourveryownstrip(input("Enter a string.`n"), input("enter character to remove`n")))

它的工作方式是我创建了一个传入两个参数的函数:1)第一个是提供的字符串,2)第二个是人们想要远程/空白的字符串或字符从字符串。然后我使用列表推导通过条件语句将“修改后的”字符串存储为新列表。然后它将修改后的字符串作为列表返回。

然而,输出将整个内容作为一个数组返回,字符串中的每个字符都用逗号分隔。

预期输出:

Boeing 747 Boeing 787
enter character to removeBoeing
The string is ['B', 'o', 'e', 'i', 'n', 'g', ' ', '7', '4', '7', ' ', 'B', 'o', 'e', 'i', 'n', 'g', ' ', '7', '8', '7']

我该如何解决这个问题?

【问题讨论】:

  • 嗯,是的……列表推导生成列表……您可能想''.join(...) 将该列表重新转换为字符串?
  • 问题是“波音”是一个字符串 - 不是一个字符
  • @deceze 我真的很困惑。首先,当我输入任何字符串时,比如让我们说helicopters 到“美国空军有很多直升机”。我实际上只是取回了原始字符串。它只是行不通。它以列表形式返回原始字符串。如果我不能使用列表理解,我该如何编写代码来创建一个字符串变量,并且循环获取每个单独的字符并将其存储到新字符串中,然后返回它。帮助
  • 你的问题是矛盾的。您似乎想重写 replace 函数而不是 split。如果是这种情况,那么您可以使用 index 来识别替换的位置,然后对字符串进行切片以将其删除
  • @Shah Jacob 这不是 split 方法所做的。 Split 接受一个字符输入并根据该字符将字符串拆分为一个列表。虽然是的,它确实从字符串中删除了字符,但它的主要用途是创建一个列表。您要做的是replace() 将替换初始字符串中子字符串的所有实例,当您将子字符串替换为像string.replace('Boeing','') 这样的空字符串时,它会删除所有出现的“波音”初始字符串。

标签: python list-comprehension


【解决方案1】:

您设置的是检查列表中的每个单独的字符并查看它是否匹配“波音”,这永远不会是真的,所以它总是会返回整个输入。它将它作为列表返回,因为使用列表推导会生成一个列表。就像@BrutusForcus 所说,这可以使用字符串切片和string.index() 函数来解决,如下所示:

def ourveryownstrip(string,character):
    while character in string:
        string = string[:string.index(character)] + string[string.index(character)+len(character):]
    return string

这将首先检查您要删除的值是否在您的字符串中。如果是,那么string[:string.index(character)] 将在第一次出现character 变量值之前获取所有字符串,而string[string.index(character)+len(character):] 将在第一次出现变量值之后获取字符串中的所有内容。这将一直发生,直到变量值不再出现在字符串中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2014-03-25
    相关资源
    最近更新 更多