我有一个名为第一列的csv文件,第二列是A或B. 我想分析这个(他们在哪个组中)并将名称放入tkinter的相应文本框中,我将如何解决这个问题?
from tkinter import *
import csv
master=Tk()
file=open(file="Book1.csv")
f=csv.reader(file)
people=[]
for column in f:
people.append(column[0:2])
classAl=Label(master,text='A',width=10).grid(row=1,column=1)
classA=Text(master,width=10)
classA.grid(column=1,row=2)
classbl=Label(master,text='B',width=10).grid(row=1,column=2)
classB=Text(master,width=10)
classB.grid(column=2,row=2)
print(people)
grouplist=[x[1] for x in people]
for names in(grouplist):
print(names)
这是我到目前为止的编码,我可以阅读他们所在的群组,但我不确定如何将其相应的名称放入正确的位置。 任何帮助将不胜感激。
答案 0 :(得分:1)
使用collections.defaultdict按标签对csv文件的内容进行分组(请参阅this other stackoverflow question)
列表框对于您的应用程序来说是更合适的小部件。
import csv
from collections import defaultdict
from tkinter import *
grouped = defaultdict(list)
# Open the csv file and use the defaultdict to group by label.
with open('Book1.csv', 'r') as fh:
book = csv.reader(fh)
for name, label in book:
grouped[label].append(name)
master = Tk()
A_label = Label(master, text='A', width=10).grid(row=1, column=1)
A_list = Listbox(master, width=10)
A_list.grid(column=1, row=2)
for name in grouped['A']:
A_list.insert(END, name)
B_label = Label(master, text='B', width=10).grid(row=1, column=2)
B_list = Listbox(master, width=10)
B_list.grid(column=2, row=2)
for name in grouped['B']:
B_list.insert(END, name)
master.mainloop()
最好使用with语句(上下文管理器)打开和读取csv文件。
我也在代码中应用了一些常规pep8建议。