[英]How to add a character in a string after each vowel using python 3
我正在尝试编写一个接收字符串(句子)的程序,并在每个元音之后添加一个字母,例如:“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
当然,因为当它不是元音时没有后备......你需要一个else
:
for letter in sen:
if letter in "aeiouy":
newString+=letter+"f"+letter
else:
newString+=letter
(不处理字母大写的情况 BTW)
但是有更有效的(和 pythonic 方式)这样做。 连接字符串性能不佳,使用推导式或正则表达式可以更好地解决此类问题。
在一行中,使用三元和列表"".join
,传递给"".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
+ 这个元音替换它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.