当我插入字符串“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()
谢谢大家!
在
getVowels
和getConstants
函数中,您正在迭代字符串letters.lower(),但在尝试删除/替换letters.replace(x, "")
时,您正在尝试删除字母中不存在的小写字母简单修复:
letters.replace(x.lower(), "")
基于正在进行的替换,我建议使用re模块一起执行所有替换,而不是在循环中执行-
re.sub("[aeiou]", "", letters, 0, re.I)
获取元音和辅音的简单方法可以是:
编辑:遵循Prashanth Mariswamy给出的正则表达式示例:
要删除元音(使用上面的元音):
要删除辅音(使用上面的辅音):
相关问题 更多 >
编程相关推荐