从字符串中删除元音后重新分配给现有变量?

时间:2015-11-19 17:45:25

标签: python

我对此代码有疑问。我的目标是从字符串中删除所有元音:

# '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)

这可能是一个愚蠢的问题,但是,为什么我必须使用现有的变量而不是新的变量呢?

2 个答案:

答案 0 :(得分:1)

替换函数不会修改现有字符串,而是返回包含请求替换的字符串,因此需要打印或分配给变量。

作为使用replace的替代方法,您会发现Python的maketranstranslate函数对此非常有用。在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_wordthe_word总是等于“加利福尼亚”。

因此,每次运行后都有以下内容:

replacing 'a': Cliforni
replacing 'e': California
replacing 'i': Calforna
replacing 'o': Califrnia
replacing 'u': California

更换'u'后,退出循环,new_word等于“加利福尼亚”