【发布时间】:2019-11-28 20:24:14
【问题描述】:
使用一个函数来检测给定字符串中是否有元音,同时检查字母“g”是否在元音旁边。如果字母“g”在元音旁边,那么它也将被视为元音。我确实发布了一个与此类似的问题并得到了一个几乎可行的答案,但我没有得到关于它是如何完成的解释,也没有人回复我要求澄清的评论。
函数如下:
import re
def disemvowel(text):
result = re.sub(r"G[AEIOU]+|[AEIOU]+G|[AEIOU]+", "", text, flags=re.IGNORECASE)
print(result)
disemvowel("fragrance")
# frrnc
disemvowel('gargden')
# rgdn
disemvowel('gargdenag')
# rgdn
此功能适用于大多数情况,除了字母“g”在元音之前和超过元音时。例如,当我输入“gag”时它不起作用,当它不应该返回任何东西时它返回“g”。我只需要澄清一下这个函数是如何工作的,以及我可以对其进行哪些编辑以使其在所有情况下都能正常运行。
这是我最初使用的函数,但它只适用于元音,因为我不知道如何添加一个条件来检测元音旁边的字母“g”:
def disemvowel(text):
text = list(text)
new_letters = []
for i in text:
if i.lower() == "a" or i.lower() == "e" or i.lower() == "i" or i.lower() == "o" or i.lower() == "u":
pass
else:
new_letters.append(i)
print (''.join(new_letters))
disemvowel('fragrance')
# frgrnc
【问题讨论】:
标签: python-3.x for-loop if-statement while-loop