一次替换字符串中的多个字符

jef*_*eff 4 python

请告知以下代码是否有效。我的似乎根本没有工作

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

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

print(s)
Run Code Online (Sandbox Code Playgroud)

我的目的是用空格替换字符串中的所有元音。如果这是错误的代码,有人可以提供正确的代码和解释,为什么它不起作用?

谢谢

Fel*_*lix 6

    \n
  • 您在 for 循环中使用文字“replacing_words”而不是变量 i 。
  • \n
  • 您不会替换原始字符串来再次修改它,而是创建一个新字符串,导致仅显示最后一个替换内容
  • \n
\n\n

这是正确的代码。

\n\n
string = input('Enter something to change')\nvowels = 'aeiouy'\n\nfor i in vowels:\n    string = string.replace(i, ' ')\n\nprint(string)\n
Run Code Online (Sandbox Code Playgroud)\n\n

另外,我认为输入返回一个字符串“类型”。所以调用str不会有任何效果。没有把握。另外#2:y也是元音(如果你想彻底的话,\xc3\xa5\xc3\xa4\xc3\xb6和其他变音符号和奇怪的字符也是元音)。

\n


Eri*_*nil 6

您可以定义翻译表。这是一个Python2代码:

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

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

对于Python3,您应该编写:

'test translation'.translate({ord(ch):' ' for ch in 'aeiou'}) # Thanks @JonClements.
Run Code Online (Sandbox Code Playgroud)

  • 在Python 3上,您可以使用:''test translation'.translate({ord(ch):''for'aeiou'}中的ch))... (3认同)