在上替换字符串中的多个字符

2024-06-28 11:38:27 发布

您现在位置:Python中文网/ 问答频道 /正文

请告知以下代码是否有效。我的好像一点也不管用

string = str(input('Enter something to change'))
replacing_words = 'aeiou'

for i in replacing_words:
    s = string.replace('replacing_words', ' ')

print(s)

我的意思是用一个空格替换字符串中的所有元音。 如果这是一个错误的代码,有人可以帮助正确的代码和解释,为什么它没有工作?

谢谢你


Tags: to代码inforinputstringchangesomething
3条回答

你可以定义一个translation table。下面是Python2代码:

>>> import string
>>> vowels = 'aeiou'
>>> remove_vowels = string.maketrans(vowels, ' ' * len(vowels))
>>> 'test translation'.translate(remove_vowels)
't st tr nsl t  n'

它快速,简洁,不需要任何循环。

对于Python3,你会写:

'test translation'.translate({ord(ch):' ' for ch in 'aeiou'}) # Thanks @JonClements.
  • 您使用的是文字“替换单词”,而不是for循环中的变量i。
  • 不替换原始字符串以再次修改它,而是创建一个新字符串,从而只显示最后一个替换

这是正确的密码。

string = input('Enter something to change')
vowels = 'aeiouy'

for i in vowels:
    string = string.replace(i, ' ')

print(string)

另外,我认为input返回一个字符串“type”。所以调用str不会有任何效果。不确定。另外,y也是元音(如果你想更彻底的话,还有åääää和其他的元音和奇怪的字符)。

您不正确地使用了replace方法。因为要分别替换每个字符,所以每次都应该传递一个字符。

这里有一句话可以说明问题:

string = ''.join(' ' if ch in vowels else ch for ch in string)

相关问题 更多 >