【问题标题】:Deleting characters from a string in Python在 Python 中从字符串中删除字符
【发布时间】:2021-04-12 19:38:54
【问题描述】:

我有一个字符列表。我想计算一个字符串中有多少个字符也在列表中。 x 是我的字符串,l 是我的列表。 (在我的列表中有'空格',所以我需要用'nothing'替换任何错误的字符)但是我的代码不起作用,因为它返回原始的len(x)而不是新的。你能帮我更正我的代码吗?

x = 'thisQ Qis'
l = ['t', 'h', 'i', 's']

for i in x:
    if i not in l:
        i =''
print(len(x))

#or

for i in x:
    if i not in l:
       list(x).remove(i)
print(len(x))

for i in x:
    if i not in l:
        x.replace("i", '')
print(x)

【问题讨论】:

  • 字符串是不可变的,所以你不能修改它,你可以创建一个新列表,其中包含字符串 x 中的字符,然后将列表转换为字符串
  • 你能发一个“x”和“l”的样本吗?
  • @BobbyOcean 我编辑了我的问题。

标签: python list string-length


【解决方案1】:

如果您想将所有字符保留在一个列表中而不是另一个列表中,那么这样的工作:

x     = 'thisQ Qis'
l     = 'tihs '     #A string is already a list of characters. 
new_x = ''.join(c for c in x if c in l)

如果你想计算字符串中的字符数,可以使用 .count() 方法完成。在这里,我创建了一个字典,其中包含测试的每个字母的计数。

count = {c:x.count(c) for c in l}

【讨论】:

    【解决方案2】:

    正如@Jahnavi Sananse 指出的,您应该使用.replace

    但要了解您的代码为何不起作用,您需要知道字符串是不可变的。 您的第二次尝试几乎是正确的,但您需要 list(x).remove(i) 而不是 x = "".join(list(x).remove(i))

    .join 将字符串放在列表的每个元素之间的点之前,并将其保存在新字符串中。

    【讨论】:

      【解决方案3】:
      1. 我们可以使用字符串replace()函数将一个字符替换为一个新字符。
      2. 如果我们提供一个空字符串作为第二个参数,那么该字符将从字符串中删除。

      s = 'abc12321cba'

      打印(s.replace('a', ''))

      【讨论】:

      • 谢谢!我编辑了我的问题,添加了我认为可以使用您的答案的方式。但它不起作用。我想知道我的格式是否错误。
      猜你喜欢
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-26
      相关资源
      最近更新 更多