【问题标题】:csv row and column fetchcsv行和列获取
【发布时间】:2013-11-21 00:02:04
【问题描述】:

所以在 Python 3.3.2 中开发一个程序。对这一切都是新的,但我一直在经历它。我制作了一个需要 5 个输入的应用程序。其中 3 个输入是组合框,两个是条目小部件。然后我创建了一个按钮事件,它将这 5 个输入保存到一个文本文件和一个 csv 文件中。打开每个文件,一切看起来都很正常。例如,保存的信息如下所示:

Brad M.,Mike K.,Danny,Iconnoshper,Strong Wolf Lodge

然后我跟随了一个 csv 演示并复制了这个......

import csv

ifile  = open('myTestfile.csv', "r")
reader = csv.reader(ifile)

rownum = 0
for row in reader:
# Save header row.
    if rownum == 0:
        header = row
    else:
        colnum = 0
        for col in row:
            print('%-15s: %s' % (header[colnum], col))
            colnum += 1

    rownum += 1

ifile.close()

最终打印精美:

rTech: Brad M.
pTech: Mike K.
cTech: Danny
proNam: ohhh
jobNam: Yeah
rTech: Damien
pTech: Aaron

以此类推。我想弄清楚的是我是否通过

命名了我的标题
if rownum == 0:
        header = row

有没有办法拉出特定的行/列组合并打印那里的内容??

我发现程序运行后我可以做

print(col)

print(col[0:10]

我可以打印最后打印的列,或最后打印的列中的字母。但是我不能再回到最后打印的那一列了。

我的最终目标是能够分配变量,这样我就可以反过来让另一个程序中的标签从 csv 文件中获取它的信息。

rTech for job is???
look in Jobs csv at row 1, column 1, and return value for rTech

我需要创建一个加载信息的字典然后调用字典吗?感谢您的任何指导


感谢您的指导。所以一直在尝试一些不同的东西,其中我真正喜欢的是以下......

import csv

labels = ['rTech', 'pTech', 'cTech', 'productionName', 'jobName']
fn = 'my file.csv'

cameraTech = 'Danny'
f = open(fn, 'r')

reader = csv.DictReader(f, labels)

jobInformation = [(item["productionName"],
               item["jobName"],
               item["pTech"],
               item["rTech"]) for item in reader if \
                item['cTech'] == cameraTech]

f.close()

print ("Camera Tech: %s\n" % (cameraTech))
print ("\n".join(["Production Name: %s \nJob Name: %s \nPrep Tech: %s \nRental Agent:      %s\n" % (item) for item in jobInformation]))

这表明我可以通过 cameraTech 创建一个变量,只要它与加载到保存 csv 文件的阅读器中的内容相匹配,并且如果 cTech 列与 cameraTech 匹配,那么它将填写正确的信息。 95% 在那里 WOOOOOO..

所以现在我很好奇的是调用每个项目。该计划在一个窗口中,我有一个列表框,其中填充了带有“productionName”和“jobName”的 .txt 文件中的项目。当我单击列表框中的其中一项时,会打开一个新窗口,然后将 .csv 文件中的匹配信息填充到相应的标签中。

想法???再次感谢:)

【问题讨论】:

    标签: python csv dictionary


    【解决方案1】:

    我认为将 CSV 文件读入字典可能是解决您问题的有效解决方案。

    Python CSV 包内置支持使用 DictReader 将 CSV 文件读入 Python 字典,请查看此处的文档:http://docs.python.org/2/library/csv.html#csv.DictReader

    这是一个使用 DictReader 的(未经测试的)示例,它将 CSV 文件读入 Python 字典并打印第一行的内容:

    import csv
    csv_data = csv.DictReader(open("myTestfile.csv"))
    
    print(csv_data[0])
    

    【讨论】:

    • 感谢 HAL。我已经编辑了我的原始帖子,其中包含有关我的企业的最新信息以及我能够从那里做的事情以及目标的去向。
    • 我不太确定您的目标是什么,但也许最好将从 CSV 文件中读取的整个字典保存在内存中,并在用户选择列表框。
    • 所以我想...我有一个程序正在运行,我输入明天的工作信息,其中包含“生产名称、工作名称、准备技术、租赁代理、相机技术和装备" 然后,摄像技术人员每天早上加载一个不同的程序,登录,并能够查看按生产名称和作业名称列出的与他们相关的作业信息,然后他们能够通过选择作业来获取更详细的信息他们希望看到更多信息。
    【解决方案2】:

    好的,所以我在看到以下内容后能够将其放在一起 (https://gist.github.com/zstumgoren/911615)

    这向我展示了如何给每个标题一个我可以调用的变量。然后我可以从那里创建一个函数,该函数允许调用和比较某些变量,如果匹配,我将能够看到所需的某些数据。所以我为了证明自己可以做到的例子如下:

    import csv
    
    source_file = open('jobList.csv', 'r')
    
    for line in csv.DictReader(source_file, delimiter=','):
        pTech= line['pTech']
        cTech= line['cTech']
        rAgent= line['rTech']
        prodName= line['productionName']
        jobName= line['jobName']
    
        if prodName == 'another':
            print(pTech, cTech, rAgent, jobName)
    

    但是我刚刚注意到一些事情,虽然我的 .csv 文件只有一行,但效果很好!!!!但是,创建正确的 .csv 文件后,我只能打印读取的最后一行的信息。 Grrrrr....虽然越来越近了....我仍在寻找,但如果有人理解我的问题,会喜欢一些光。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 2016-12-08
      相关资源
      最近更新 更多