【问题标题】:How to extract the column in csv in python如何在python中提取csv中的列
【发布时间】:2021-11-04 20:56:54
【问题描述】:

我正在使用 python 和 csv lib 以及 Tkinter GUI

Column1    Column2
Test1      ID1
           ID2
           ID3
Test2      Act1
           ACT2
           ACT3

我想根据 Column1 测试编号显示 column2。
例如:SO Test1 被选中 ID1 , ID2, ID3 应该被显示并且在下一次迭代中当 Test2 被选中 Act1, Act2, Act3 被显示

我尝试了什么:

with open('Test.csv') as f:
  listbox = tk.Listbox(self.root, width=162, height=200)
  listbox.place(x=10, y=50)
  reader = csv.DictReader(f, delimiter=',')
  for row in reader:
    adata1 = row['column1']
    adata2 = row['column2']

    if adata1 != adata1 or adata1 == "":
      listbox.insert('end', adata2)
    else:
      continue

如果有人可以帮助我,请。

【问题讨论】:

  • 首先修复代码的缩进。其次你的问题不清楚。如何选择Test1Test2?在Listbox?你期待的listbox最终的内容是什么?您当前的问题实际上是什么?
  • adata1 = row['column1'] 这将选择 Test1 ,在 Listbox ID1 中应显示 ID2,ID3,在下一个 for Loop adata1 = Test2 Listbox 将显示 Act1, Act2, Act3
  • 按照你的解释,listbox的最终内容将是Act1Act2Act3,对吧?您将永远不会看到 ID1ID2ID3,因为它们将被替换。
  • 应该按照test1和test2替换
  • 我有右键选择Test1和Test2。如果 Test1 将选择 ID1,ID2,ID3 将显示,当再次按下右箭头键将显示 Test2 和 Act1,Act2,Act3 将显示

标签: python csv tkinter listbox


【解决方案1】:

据我了解,Test.csv 文件的内容是这样的:

column1,column2
Test1,ID1
,ID2
,ID3
Test2,ACT1
,ACT2
,ACT3

然后你可以使用字典来存储CSV文件内容:

import csv

tests = {}
with open('Test.csv') as f:
    reader = csv.DictReader(f, delimiter=',')
    for row in reader:
        if row['column1']:
            key = row['column1']
            tests[key] = []
        tests[key].append(row['column2'])

tests 的结果将是:

{'Test1': ['ID1', 'ID2', 'ID3'], 'Test2': ['ACT1', 'ACT2', 'ACT3']}

您可以根据您选择的密钥将所需的项目填充到listbox

listbox = tk.Listbox(self.root, width=162, height=200)
listbox.place(x=10, y=50)

...

key = 'Test1' # assume Test1 is selected as the key

listbox.delete(0, 'end')
for item in tests[key]:
    listbox.insert('end', item)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 2022-11-01
    • 2013-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多