1

我有一个函数, table()它读取 csv 文件并返回单个列表中的行。我想映射这些列表以创建一个字典,字段标题是键,基础行是值。但是,我似乎无法做到这一点。当我尝试l在命令提示符下仅调用从函数 () 创建的列表列表中的第一个元素时,它返回所有列表,直到“N”,即单词“None”中的第一个字母,尽管我打破了(返回)如果 reader 是 None。当我对文本文件的 sys.stdout 执行相同操作时,它执行相同操作,但 'N' 被替换为<type 'list'>. 有谁知道我做错了什么,以及如何根据我的 table()功能从 CSV 文件创建字典(或列列表)?

import csv

def table():
    with open('C:\\Python27\\test.csv', 'rb') as f:
        reader = csv.reader(f)
        for row in reader:
            print row
        if reader is None:
            return

l = list(str(table()))
keys = l[0]
print keys

输出文本文件:

['Field1', 'Field2', 'Field3', 'Field4']
['a', '1', 'I', 'access']
['b', '2', 'II', 'accessing\n']
['c', '3', 'III', 'accommodation']
['d', '4', 'IIII', 'basically']
<type 'list'>
4

2 回答 2

3

更蟒蛇

def table():
    with open('C:\\Python27\\test.csv', 'rb') as f:
        reader = csv.reader(f)
        for row in reader:
            yield row
于 2012-12-07T15:27:46.083 回答
1

你实际上并没有从table函数中返回任何东西。试试这样:

def table():
    with open('C:\\Python27\\test.csv', 'rb') as f:
        lines = []
        reader = csv.reader(f)
        if reader:
            for row in reader:
                lines.append(row)
            return lines
        else:
            return []
于 2012-12-07T15:25:09.850 回答