1

table()csvファイルを読み取り、個々のリストの行を返す関数があり ます。これらのリストをマップしてディクショナリを作成したいと考えています。フィールド ヘッダーがキーで、下にある行が値です。しかし、私はこれを行うことができないようです。コマンド プロンプトで関数 ( ) から作成したリストのリスト内の最初の要素のみを呼び出そうとすると、l「None」という単語の最初の文字である「N」までのすべてのリストが返されます。 (戻り値) リーダーが 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

もっとPython的に

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 に答える