0
utf-8テキスト形式の.csvファイルを読み込み、パイプ区切り文字付きのcp1252(ansi)形式で書き込もうとしています。次のコードはPython 3.6で動作しますが、Python 2.6でも動作する必要があります。しかし、 'open'関数はPython 2.6でencodingキーワードを許可しません。csvをuts-8からcsv writer python 2.6のansiに変換できません。
import datetime
import csv
# Define what filenames to read
filenames = ["FILE1","FILE2"]
infilenames = [filename+".csv" for filename in filenames]
outfilenames = [filename+"_out_.csv" for filename in filenames]
# Read filenames in utf-8 and write them in cp1252
for infilename,outfilename in zip(infilenames,outfilenames):
infile = open(infilename, "rt",encoding="utf8")
reader = csv.reader(infile,delimiter=',',quotechar='"',quoting=csv.QUOTE_MINIMAL)
outfile = open(outfilename, "wt",encoding="cp1252")
writer = csv.writer(outfile, delimiter='|', quotechar='"', quoting=csv.QUOTE_NONE,escapechar='\\')
for row in reader:
writer.writerow(row)
infile.close()
outfile.close()
私はいくつかのソリューションを試してみました:
- は、エンコーディングを定義するわけではありません。特定のユニコード文字でエラーが発生する
- ioライブラリ(openではなくio.open)を使用します。 「型エラー:テキストストリーム内のテキストにstrを書き込むことができません」という結果になります。
誰かがPython 2.Xでこれに対して正しい解決法を知っていますか?
Pythonの2の '' csv'は好きではありません。 unicode'文字列であるため、標準ライブラリには簡単な修正はありません。ただし、サードパーティのソリューションがあります。たとえば、[この質問](https://stackoverflow.com/questions/904041/reading-a-utf8-csv-file-with-python)への回答を確認してください。 – lenz