我是一个初学者学习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)
答案 0 :(得分:4)
您可以使用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
您可能还想检查大写字母。
答案 1 :(得分:1)
使元音成为一个数组,每个元素都是自己的字母。
然后做
for letter in word:
if letter in vowels:
letter = "_"
答案 2 :(得分:1)
列表可用于轻松构建单词,使用.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)
答案 3 :(得分:1)
你可以使用正则表达式
import re
print(re.sub("[aeiouAEIOU]", "_", "abc")) # prints _bc
答案 4 :(得分:1)
回答为什么你的方法不起作用。
if letter != vowels:
不做你的想法。它实际上将字母与完整字符串"aeiouy"
进行比较。它总是不相等的(例如"a" != "aeiouy"
为True,任何其他字母也是如此)。
更可能是你的意思
if letter in vowels:
引擎盖将迭代vowels
并将每个字符与letter
进行比较,如果任何字母匹配,则返回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)
答案 5 :(得分:0)
使用列表推导并将vowels
设置为set
对象(如果您有大量的单词列表,这对于提高性能非常有用):
>>> vowels = set("aeiouy")
>>> word = 'ampersand'
>>> new_word = "".join([letter if letter not in vowels else "_" for letter in word])
>>> print(new_word)
_mp_rs_nd
答案 6 :(得分:0)
如果您使用Python 3,请使用str.maketrans
来构建字符串转换表:
vowels = "aeiouy"
vowels += vowels.upper()
tr = str.maketrans(vowels, '_' * len(vowels))
print('Yo, this is a wacky phrase!'.translate(tr))
显示:__, th_s _s _ w_ck_ phr_s_!
答案 7 :(得分:0)
DRAX:我会做得更好!
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