如何使用python 3在每个元音后添加字符串

时间:2017-09-25 19:53:29

标签: python python-3.x encryption

我试图编写一个接受字符串(句子)的程序,并在每个元音之后添加一个字母,例如:" 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

1 个答案:

答案 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 +这个元音替换它。