繁体   English   中英

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

[英]Not able to remove characters from a string in Python

我试图遍历代表字母的字符串x ,同时将这些值与包含某些特定字母的列表进行比较。

如果列表和字符串x都匹配,则应从字符串x删除特定字符。 这是一段非常简单明了的代码。 我已将.replace方法移至T。但是,当我运行代码时,字符串x仍显示为原始状态。

这是我的工作代码:

lettersGuessed = ['e', 'i', 'k', 'p', 'r', 's']

x = 'abcdefghijklmnopqrstuvwxyz'

for i in range(len(x)):
    if x[i] in lettersGuessed:
        x.replace(x[i],'')

print x  "Available Letters"

尝试以下

x = x.replace(x[i], '')

您没有将更改后的值重新分配回原始字符串。

简单的错误。

x = x.replace(x[i],'')

您可以使用join和生成器表达式:

print("Available Letters","".join(ch if ch not in lettersGuessed else "" for ch in x  ))

使用循环,只需遍历letterGuessed中的字符并每次更新x:

 for ch in lettersGuessed:
     x = x.replace(ch,'') # assign the updated string to x


print("Available Letters",x)

或遍历x是相同的逻辑:

for ch in x:
    if ch in lettersGuessed:
       x =  x.replace(ch,'')

字符串是不可变的,因此您无法在适当位置更改字符串。 您需要将x重新分配给使用x.replace(ch,'')创建的新字符串

In [1]: x = 'abcdefghijklmnopqrstuvwxyz'    
In [2]: id(x)
Out[2]: 139933694754864    
In [3]: id(x.replace("a","foo")) # creates a new object
Out[3]: 139933684264296
In [7]: x 
Out[7]: 'abcdefghijklmnopqrstuvwxyz' # no change     
In [8]: id(x)
Out[8]: 139933694754864 # still the same object

您可以使用python集来实现此目的:

a = ['a','b','d']
b = "abcdefgh"
print ''.join(sorted(list(set(b) - set(a))))

输出:

cefgh Available letters

或使用列表推导来实现此目的:

a = ['a','b','d']
b = "abcdefgh"
print ''.join([x for x in b if x not in a])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM