从 Python 中的字符串中删除字符

Deleting characters from a string in Python

我有一个字符列表。我想计算一个字符串中有多少个字符也在列表中。 x 是我的字符串,l 是我的列表。 (在我的列表中有 'space' 所以我需要用 '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)
  1. 我们可以使用字符串 replace() 函数将一个字符替换为一个新字符。
  2. 如果我们提供一个空字符串作为第二个参数,那么该字符将从字符串中删除。

s = 'abc12321cba'

print(s.replace('a', ''))

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

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

而不是 list(x).remove(i)

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

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

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}