如何在Python中提取小写元音/辅音?

如何在Python中提取小写元音/辅音?,python,tkinter,extract,Python,Tkinter,Extract,当我插入字符串“Character Extractor”时,提取元音的输出是“Chrctr Extrctr”,而辅音提取器的输出是“Caae Eao”。我想我把用户输入的字符串转换成了小写,但正如你看到的,大写字母没有被检查 每个项目的预期输出为“Chrctr xtrctr”和“aae Eao”。如何更改此设置以获得预期结果 奖金:我该如何用regex来代替呢 import tkinter as tk import re class CharacterExtractor: def __

当我插入字符串“Character Extractor”时,提取元音的输出是“Chrctr Extrctr”,而辅音提取器的输出是“Caae Eao”。我想我把用户输入的字符串转换成了小写,但正如你看到的,大写字母没有被检查

每个项目的预期输出为“Chrctr xtrctr”和“aae Eao”。如何更改此设置以获得预期结果

奖金:我该如何用regex来代替呢

import tkinter as tk
import re

class CharacterExtractor:
    def __init__(self):
        self.mainWindow = tk.Tk()
        self.characterLabel = tk.Label(self.mainWindow, text = "Character Extracter")
        self.characterEntry = tk.Entry(self.mainWindow)
        self.vowelButton = tk.Button(self.mainWindow, text = "Extract Vowels", command = self.getVowels)
        self.consonantButton = tk.Button(self.mainWindow, text = "Extract Consonants", command = self.getConsonants)
        self.lettersValue = tk.StringVar()
        self.lettersValue.set("-")
        self.outputLabel = tk.Label(self.mainWindow, textvariable = self.lettersValue)
        self.characterLabel.pack()
        self.characterEntry.pack()
        self.vowelButton.pack()
        self.consonantButton.pack()
        self.outputLabel.pack()
        tk.mainloop()

    def getVowels(self):
        letters = str(self.characterEntry.get())
        vowels = ("a", "e", "i", "o", "u")
        for x in letters.lower():
            if x in vowels:
                letters = letters.replace(x, "")
                self.lettersValue.set(letters)

    def getConsonants(self):
        letters = str(self.characterEntry.get())
        vowels = ("b", "c", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "v", "w", "x", "y", "z")
        for x in letters.lower():
            if x in vowels:
                letters = letters.replace(x, "")
                self.lettersValue.set(letters)     

mainWindow = CharacterExtractor()

谢谢大家!

getvouels
getConstants
函数中,您正在迭代字符串字母.lower(),但在尝试删除/替换
字母.replace(x,“”
时,您正在尝试删除字母中不存在的小写字母

简单修复:
字母。替换(x.lower(),“”)


基于正在进行的替换,我建议使用re模块一起进行所有替换,而不是在循环中进行-
re.sub(“[aeiou]”、“”、字母、0、re.I)

获取元音和辅音的稍微简单的方法可以是:

from string import ascii_letters  # A to Z and a to z

vowels = 'aeiouAEIOU'
consonants = ''.join(set(ascii_letters)-set(vowels))
编辑:遵循以下给出的正则表达式示例:

要删除元音(使用上面的元音):

要删除辅音(使用上面的辅音):

re.sub(f"[{vowels}]", "", letters)
re.sub(f"[{consonants}]", "", letters)