在python中,如何用下划线替换单词的元音?
我是一个学习python语言的初学者,我很难理解如何使用单词的元音并用下划线替换它们 到目前为止,这是我想到的,但它根本不起作用在python中,如何用下划线替换单词的元音?,python,Python,我是一个学习python语言的初学者,我很难理解如何使用单词的元音并用下划线替换它们 到目前为止,这是我想到的,但它根本不起作用 word = input("Enter a word: ") new_word = "" vowels = "aeiouy" for letter in word: if letter != vowels: new_word += word else: new_word += "_" print(new_
word = input("Enter a word: ")
new_word = ""
vowels = "aeiouy"
for letter in word:
if letter != vowels:
new_word += word
else:
new_word += "_"
print(new_word)
让元音与每个元素组成一个数组,每个元素都有自己的字母 那就做吧
for letter in word:
if letter in vowels:
letter = "_"
列表可用于轻松构建单词,使用
.join()
可以将列表项组合成单个字符串
word = 'pizza'
vowels = "aeiouy"
new_word = []
for letter in word:
if letter in vowels:
new_word.append('_')
else:
new_word.append(letter)
print(''.join(new_word))
以下是生成器表达式中的相同内容:
word = 'pizza'
vowels = "aeiouy"
new_word = ''.join(c if c not in vowels else '_' for c in word)
print(new_word)
您可以使用
string.translate
和maketrans
from string import maketrans
vowels = "aeiouy"
t = "______"
st = "trying this string"
tran = maketrans(vowels, t)
print st.translate(tran)
# Gives tr__ng th_s str_ng
您可能还需要检查大写字母。您可以使用正则表达式
import re
print(re.sub("[aeiouAEIOU]", "_", "abc")) # prints _bc
使用列表理解并将
元音
设置为设置
对象(只有在迭代大量单词时,这才有助于提高性能):
回答为什么你的方法不起作用
if letter != vowels:
不做你想做的事。实际上,它将字母与完整字符串“aeiouy”进行比较。它总是不相等的(例如,“a”!=“aeiouy”
是真的,其他字母也是真的)
你的意思很可能是
if letter in vowels:
在引擎盖下,它将迭代元音
,并将每个字符与字母
进行比较,如果任何字母匹配,则返回True
第二个错误就在这里
new_word += word
您正在将原始单词添加到新词中,而不是刚刚检查的字母。那就这样吧
new_word += letter
第三点要注意的是,你的逻辑与你的意图相反。您想将元音替换为。
,但您的if语句允许将元音替换为新词,并将辅音替换为下划线。所以如果你撤销if和else子句
你最后得到的一切
word = input("Enter a word: ")
new_word = ""
vowels = "aeiouy"
for letter in word:
if letter in vowels:
new_word += '_'
else:
new_word += letter
print(new_word)
如果您有Python 3,请使用构建字符串转换表:
vowels = "aeiouy"
vowels += vowels.upper()
tr = str.maketrans(vowels, '_' * len(vowels))
print('Yo, this is a wacky phrase!'.translate(tr))
显示:
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu代码>德拉克斯:我会做得更好强>
def replace_vowels(word):
vowels = ['a', 'e', 'i', 'o', 'u']
for x in (word.lower()):
if x in vowels:
word = word.replace(x, "_")
print(word)
replace_vowels('Stackoverflow')
输出
非常感谢,这很有帮助。没问题。请随意接受(并投票)这个或任何其他答案,无论你觉得哪个答案对你帮助最大。我也投票支持你花时间解释错误。。编辑:只看到了日期,但无论如何你值得投票;)
def replace_vowels(word):
vowels = ['a', 'e', 'i', 'o', 'u']
for x in (word.lower()):
if x in vowels:
word = word.replace(x, "_")
print(word)
replace_vowels('Stackoverflow')
St_ck_v_rfl_w