0

私はネット全体を見てきましたが、これを機能させることができないようです。

Python2.6を使用してcsvファイルinput.csvを読み取りPythonでDictReaderDictWriterを使用して1行ずつoutput.csvに出力したいと考えています。

input.csvのエンコーディングについては何も知りません。output.csvを開くと、すべてがEYESに問題ありませんが、2行でdiffコマンドを実行すると、すべての行が異なります。ファイルを割り当てとして送信するため、ファイルのバイトシーケンスを同じにする必要があります。

これが私が持っているコードの骨組みです(あちこちから借りました):

from csv import DictReader,DictWriter

class DictWriterEx(DictWriter):
    def writeheader(self):
        header = dict(zip(self.fieldnames, self.fieldnames))
        self.writerow(header)

with open('input.csv','rb',) as f:
    dr = DictReader(f)
    with open('output.csv','wb') as o:
        dw = DictWriterEx(o,fieldnames=dr.fieldnames)
        dw.writeheader()
        for row in dr:
            dw.writerow(dict((k, v) for k, v in row.iteritems()))

私も変更してみました

dw.writerow(dict((k, v) for k, v in row.iteritems()))

に並ぶ

dw.writerow(dict((k, v.encode('utf-8')) for k, v in row.iteritems()))

それは私に例外を与えます:

UnicodeDecodeError:'ascii'コーデックは位置7のバイト0xc3をデコードできません:序数が範囲内にありません(128)

私は夢中になっているので、この問題を解決するのを手伝ってください。

解決策:lineterminator ="/n"を使用してDictWriterを 初期化します

4

1 に答える 1

3

ファイルの行末が異なる可能性はありますか? 渡すファイル、csv.readerまたはcsv.writerバイナリ モードで開く必要があるファイル (ドキュメントを参照)。これは、実行しているようには見えません。これにより、誤った行末文字が書き込まれる可能性があります。

于 2012-07-26T00:50:35.783 に答える