我试图编写一个接受字符串(句子)的程序,并在每个元音之后添加一个字母,例如:" Jon"成为" Jofon"。我认为用for循环做这件事(当然)有更好的方法。 这是我到目前为止所做的:
sen="Jon"
newString=""
for letter in sen:
if letter == "a" or letter == "e" or letter == "i" or letter == "o" \
or letter == "u" or letter == "y":
newString+=letter+"f"+letter
print(newString)
似乎添加了字母" f"只有元音离开辅音才能给我这个结果:
ofo
答案 0 :(得分:1)
当然,因为当它不是元音时没有后退......你需要一个else
:
for letter in sen:
if letter in "aeiouy":
newString+=letter+"f"+letter
else:
newString+=letter
(不处理字母大写BTW的情况)
但是有更高效(和pythonic方式)的方法。连接字符串表现不佳,使用理解或正则表达式可以更好地解决这类问题。
在一行中,使用三元和列表推导,传递给"".join
:
newstring = "".join(["{0}f{0}".format(letter) if letter.lower() in "aeiouy" else letter for letter in sen])
替代正则表达式,将元音捕获为一个组并使用它两次将f
字符串包装为使用原始前缀或\1
来调用组(\1
)被解释为ASCII而是字符\x01
:
re.sub("([aeiouy])",r"\1f\1","Jon",flags=re.IGNORECASE)
找到一个元音,然后再用这个元音+ f
+这个元音替换它。