3

辞書の要素を、各キーが列になるテキスト ファイルに書き込もうとしています。現在、私は次のようなものを持っています

import csv
import numpy as np



data1 = np.arange(10)
data2 = np.arange(10)*2
data3 = np.arange(10)*3

writefile = '../Desktop/data.txt'
datadict = {} 

datadict['data1'] = data1
datadict['data2'] = data2
datadict['data3'] = data3


f = open( writefile, 'w' )
fieldnames = ['data1','data2', 'data3']
data = csv.DictWriter(writefile, fieldnames, restval='', extrasaction='ignore', dialect='excel')

f.close()

しかし、「引数1には「書き込み」メソッドが必要です」というエラーが表示されます。それが何を意味するのかわかりません。方言=「excel」も気になるところですが、他に何を入れたらいいのかわかりません。最後に、次のようなファイルが必要です。

ここに画像の説明を入力

ありがとう

4

5 に答える 5

8

ここで DictWriter を使用する必要はまったくありません。

import csv
import numpy as np

data1 = np.arange(10)
data2 = np.arange(10)*2
data3 = np.arange(10)*3

writefile = '../test.csv'
fieldnames = ['data1','data2', 'data3']
with open( writefile, 'w' ) as f:
    writer = csv.writer(f)
    writer.writerow(fieldnames)
    writer.writerows(zip(data1, data2, data3))
于 2012-10-01T21:54:32.040 に答える
2

DictWriterファイルのようなオブジェクトをコンストラクターの最初の引数として渡す必要があります。

datalist = [{'data1': d1, 'data2': d2, 'data3': d3} for d1, d2, d3 in zip(data1, data2, data3)]
...
f = open(writefile, 'w')
...
writer = csv.DictWriter(f, ...) 
for i in xrange(10):
    writer.writerow(datalist[i])
f.close()

より単純な類推のケース:

with open(writefile, 'w') as f:
    writer = csv.writer(f)
    for row in zip(data1, data2, data3):
        writer.writerow(row)
于 2012-10-01T20:57:40.740 に答える
0

これを試して:

import csv
import numpy as np

data1 = np.arange(10)
data2 = np.arange(10)*2
data3 = np.arange(10)*3

writefile = '../Desktop/data.txt'
datadictlist = [{'data1': data1[i], 'data2': data2[i], 'data3': data3[i]} for i in xrange(10)]

f = open( writefile, 'w' )
fieldnames = ['data1','data2', 'data3']
writer = csv.DictWriter(f, fieldnames, restval='', extrasaction='ignore', dialect='excel')
writer.writerows(datadictlist)

f.close()
于 2012-10-01T20:55:26.527 に答える
0

「w」の代わりに「a+」を入れてください

f = open( writefile, 'a+' )
于 2012-10-01T21:54:06.017 に答える