1

ここに画像の説明を入力csv ファイルに書き込もうとしています リストに 2 つの値 [string,int] があり、これが私のコードです

prod = [['Enveloppes Esquisse adh\xe9sives', 1.85], 
        ['Enveloppes adh\xe9sives Esquisse', 1.1], 
        ['Enveloppes adh\xe9sives Esquisse', 1.1], 
        ['Enveloppes adh\xe9sives Esquisse', 1.85], 
        ['Pochettes kraft Esquisse', 0.95], 
        ['Pochettes kraft Esquisse', 1.75]]

cw = csv.writer(open("nv.csv", 'w'), delimiter=';')
    cw.writerow(['Produit', 'Prix'])
    for row in prod:
        cw.writerow( [row[0],row[1]] )

しかし、私は「封筒」を列に並べてから、他の列にエスキスを入れます.1列のすべての文字列ではありません. 私のcsvファイルには、「Enveloppes Esquisse adh\xe9sives」用と「1,85」用の2つの行が含まれている必要があります

4

1 に答える 1

2

ドキュメントには次のように記載されています。

csv モジュールは Unicode の読み取りと書き込みを直接サポートしていませんが、ASCII NUL 文字に関するいくつかの問題を回避するために 8 ビット クリーンに保存されています。したがって、NUL を使用する UTF-16 などのエンコーディングを避ける限り、エンコーディングとデコーディングを処理する関数またはクラスを作成できます。UTF-8 を推奨します。

あなたの文字列は、cp1250またはcp1252(サンプルからはわかりません)エンコードされたバイト文字列であり、ユニコード文字列ではないため、問題ありません。ファイルをバイナリモードで開くだけです。

import io
import csv
prod = [['Enveloppes Esquisse adh\xe9sives', 1.85],
        ['Enveloppes adh\xe9sives Esquisse', 1.1],
        ['Enveloppes adh\xe9sives Esquisse', 1.1],
        ['Enveloppes adh\xe9sives Esquisse', 1.85],
        ['Pochettes kraft Esquisse', 0.95],
        ['Pochettes kraft Esquisse', 1.75]
        ]

with io.open('nv.csv', 'wb') as f:
    writer = csv.writer(f, delimiter=';')
    writer.writerow(['Produit', 'Prix'])
    for row in prod:
        writer.writerow(row)
于 2013-08-28T07:53:06.130 に答える