Python:有没有办法删除字符而不考虑大小写?

问题描述 投票:0回答:2

我的代码应该从用户输入的字符串中删除元音。它工作正常,但我想看看是否有办法简化我的代码。 A screenshot of my code

我原本没有这条线:

     elif i == "A" or i == "E" or i == "I" or i == "O" or i == "U":
        n.replace(i, "")
        output = output

但我添加它是因为当我的输入包含大写元音时,它不会删除元音,因为它们是大写的。

有没有办法重写我的代码,以便我可以删除小写和大写的元音,而无需额外的行?

python loops refactoring
2个回答
1
投票
word = input()
output = word

for letter in word:
    if letter.casefold() in "aeiou":
        output = word.replace(letter.casefold(), "")
        
print(word)
print(output)

0
投票

您可以检查小写字母,这样就不会重复比较:

if i.lower() in 'aeiou':
    n.replace(i, "")

但是您可以使用正则表达式编写更简单的没有循环的代码:

import re

def remove_vowels(n):
    return re.sub(r'[aueoi]', '', n, flags=re.IGNORECASE)

它基本上从列表 [a, u, e, o, i] 中删除任何字符,添加

flags=re.IGNORECASE
匹配小写和大写字母,并用
''
替换每个字母,基本上将其删除

© www.soinside.com 2019 - 2024. All rights reserved.