2011-06-27 10 views
3

ヤフーのマーケティングアカウントにデータをインポートする必要があります - CSVファイルは - yahoo:CSV/TSVファイル:Unicode(技術的にはUTF-16LEエンコーディング)Python - CSVファイルをUTF-16LEで保存

writer = csv.writer(open('new_yahoo.csv','w', encoding='utf-16-le'), delimiter="\t") 
writer.writerows(reader) 
+0

これは本当に問題ではありません...私はあなたが望んでいると答えました(Pythonのcsv.writerで行うことができます)が、本当にあなたが望むものを正確に説明する必要があります。 – thegrinner

答えて

0

あなたは、Python CSV pageで提供されている例を下にスクロールすると、あなたはそれが

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

unicode_csv_readerを()以下のUnicode CSVデータ(ユニコードのリストを処理するためにcsv.readerをラップ発電機がある:あなたがUnicodeを行う必要がない場合

はしかし、これは助けることができるようになります。文字列)。

...次UnicodeReaderとUnicodeWriterクラスを使用することができ、他のすべてのエンコーディングについては

。彼らは、コンストラクタで追加のエンコーディングパラメータを取り、データがUTF-8としてエンコードされた本当のリーダーやライターを渡していることを確認してください:

だから、一番下にそれらが提供する例のように見えるしたいエンコーディングを行う必要があります。

0

openコマンドで判断してPython 3.Xを使用しているようです。あなたが持っているものはうまくいくはずですが、newlineパラメータも定義する必要があります。 newline=''は、ネイティブ行の末尾(たとえば、WindowsではCRLF)を使用しますが、Yahooには他の要件があります。以下のコードは、Windows上でCRLF行末でファイルを正しく生成しました。

data = [ 
    ['One','Two','Three'], 
    [1,2,3], 
    [4,5,6], 
    [7,8,9]] 

import csv 
f = open('new_yahoo.csv','w', newline='', encoding='utf-16-le') 
writer = csv.writer(f, delimiter='\t') 
writer.writerows(data) 
f.close() 
関連する問題