0

フィールドが期待どおりにフォーマットされていない場合のdictreaderのインポートの問題を解決しようとしています.すべてのフィールド名を大文字(または小文字)に強制すると解決します.

私が使用している基本的なコードは次のとおりですが、dictの行を更新できないようです。

f = open(sourceFile,'rb')
reader = csv.DictReader(f, dialect='excel')
for r in reader:
    r.update(dict((k.upper(), v) for k, v in r.iteritems()))

目的の出力は辞書の同じリストですが、すべてのキーが大文字に設定されます。

「更新」がありません。新しいリストに書き込んでいます。少しイライラするだけです。

4

3 に答える 3

5

ファイル全体を反復処理しないようにするfieldnamesには、次のように DictReader の属性を変更します。

f = open(sourceFile,'rb')
reader = csv.DictReader(f, dialect='excel')
reader.fieldnames = [name.upper() for name in reader.fieldnames]
于 2016-08-23T21:02:34.857 に答える
1

新しいリストが必要な場合:

new = [{k.upper(): v for k, v in r.iteritems()} for r in reader]

または、一度に 1 つの辞書を作成する場合は、次のようにします。

for r in reader:
    r = {{k.upper(): v for k, v in r.iteritems()}
    # use r
于 2013-04-07T17:59:28.297 に答える