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