从Tkinter文本字段获取列表,检查重复项并删除任何

2024-09-26 18:09:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试清除文本字段中的重复项(每个项都在文本字段中的新行上)。我的逻辑是:对文本字段调用get(),插入到列表中,然后运行一系列公认缓慢的嵌套循环来检查重复项,然后重新填充文本字段

有人能帮我评估一下我的逻辑,告诉我为什么这不起作用吗

def checkDup(self):
                clean = []
                dirty = O1.get("1.0", END+'-1c').split("\n")       
                for i in dirty[1:]:
                        if i not in clean:
                                clean.append(i)
                                clean.append("\n")
                O1.delete("1.0", END)
                O1.insert(END, clean)

Tags: in文本selfclean列表getdef逻辑
1条回答
网友
1楼 · 发布于 2024-09-26 18:09:55

我会使用for循环的相同逻辑来检查重复项。。也许有更好的方法可以做到这一点,但目前在我们的水平上,我认为这是一个好的开始

查看代码:

for i in dirty[1:]: 

为什么要从列表中的第一项之后开始,是否需要将其排除在外?如果是这样,您将使用以下方法删除它:

01.delete('1.0', END)

您可能需要将代码更改为01。如果需要保留第一行,请删除('2.0',END)

if i not in clean:
    clean.append(i)
    clean.append('\n')

在这里,您正在创建一个较长的列表,其中包含一组新行,每个新行都被视为列表的一员,很有趣。。我把这部分搞砸了。。经过测试,我发现你的结果只有我的一半奇怪

最后一行:您直接在小部件中推送已更正的列表,这会导致一个奇怪的结果

01.insert(END, clean)

把那个修好01.insert(END,''.join(clean))这将把你的列表分成一个包含你先前插入的换行符的字符串,将所有文本放在正确的位置

相关问题 更多 >

    热门问题