csv行和列提取

时间:2013-11-21 00:02:05

标签: python csv dictionary

所以在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

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

我已经发现我可以在程序运行后执行

print(col)

print(col[0:10]

我可以打印最后打印的col或最后打印的col的字母。但是我不能比最后一次打印的那个更远。

我的最终目标是能够分配变量,以便我可以在另一个程序中获得一个标签,从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文件中的匹配信息填充到相应的标签中。

思考???再次感谢:)

2 个答案:

答案 0 :(得分:0)

我认为将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])

答案 1 :(得分:0)

好的,所以在看到以下内容(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 ......虽然越来越近......我仍然在寻找,但如果有人理解我的问题,就会喜欢一些光。