我对此代码有疑问。我的目标是从字符串中删除所有元音:
# 'California' is the_word I'm removing vowels from
the_word = "California"
# a for-loop that will look over and remove any vowels
for vowel in 'aeiou':
# Assign the expression to an existing variable. Why?
the_word = the_word.replace(vowel, '')
# print the output
print(the_word)
如果我在for-loop中重用'the_word'变量并使用新表达式,则此程序有效。但是,如果我选择在我的for循环中使用新变量(即'new_word'),则它不起作用。例如:
the_word = "California"
for vowel in 'aeiou':
new_word = the_word.replace(vowel, '')
print(new_word)
这可能是一个愚蠢的问题,但是,为什么我必须使用现有的变量而不是新的变量呢?
答案 0 :(得分:1)
替换函数不会修改现有字符串,而是返回包含请求替换的字符串,因此需要打印或分配给变量。
作为使用replace
的替代方法,您会发现Python的maketrans
和translate
函数对此非常有用。在Python 2.7中:
import string
def disemvowel(s):
return string.translate(s, string.maketrans("",""), "EAIOUeaiou")
without_vowels = disemvowel("California")
print without_vowels
这将显示以下内容:
Clfrn
或者对于Python 3,可以使用以下内容:
def disemvowel(s):
return s.translate(str.maketrans("","", "EAIOUeaiou"))
without_vowels = disemvowel("California")
print(without_vowels)
答案 1 :(得分:0)
在for
循环中,您每次迭代都会在replace
上调用the_word
。 the_word
总是等于“加利福尼亚”。
因此,每次运行后都有以下内容:
replacing 'a': Cliforni
replacing 'e': California
replacing 'i': Calforna
replacing 'o': Califrnia
replacing 'u': California
更换'u'后,退出循环,new_word
等于“加利福尼亚”