[英]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.