2012-02-29 12 views
8

私はPython 2.6を使用しています。私はSQL Serverからクエリ結果(CSV形式)を処理するPythonプログラムを作成していましたが。私はそれがユニコードをサポートしていないことを発見しました。Python 3.1.3はcsvモジュールでユニコードをサポートしていますか?

私はcsvファイルでプログラムを実行すると、エラーが言っアップpoped:私はUltraEditのとANSI/ASCII形式のCSVファイルを保存

for row in csvReader: 
Error: line contains NULL byte 

した後、プログラムは大丈夫実行されています。

私は、エンコードオプションを含めることを試みたが、それは失敗しました:

csvReader = csv.reader(open(fname, mode='rb', encoding='unicode'), delimiter=',') 
TypeError: 'encoding' is an invalid keyword argument for this function 

csvReader = csv.reader(open(fname, mode='rb', encoding='utf-8'), delimiter=',') 
TypeError: 'encoding' is an invalid keyword argument for this function 

のpython 3は、このUnicodeの読み取りをサポートしている場合、私は疑問に思います。それは私に多くの仕事を節約することができます。

+0

のは「rb」モードでそれを開こうか? – Kimvais

+0

Python 3.1.3の 'open' *は確実に' encoding = '引数をサポートしていますので、別のバージョンのPythonを使用しているか、間違って' open'関数を上書きしてしまっています。 –

+0

私はPython 2.6を使用していると言いました。だから、Python 3.1.3ではこの問題はありませんか? – lamwaiman1988

答えて

6

Python 3は、ユニコードをサポートしています。私の推測では、読み込みのためにCSVファイルを開いたときに間違った(または不要の)エンコーディングを指定したということです。 http://docs.python.org/release/3.1.3/library/functions.html#open

をなど、何かしてみてください:参照してください

reader = csv.reader(open("foo.csv", encoding="utf-8")) 

編集をただし

import codecs 
reader = csv.reader(codecs.open("foo.csv", encoding="utf-8")) 

あなたの場合:あなたは、Python 2.6を使用している場合は、あなたと同じ結果を得ることができますあなたのファイルが"utf-16"を使ってエンコードされている可能性がありますので、utf-8を使ってファイルをデコードできない場合は、それを試してください。

+0

エンコードを指定しようとしましたが、エラーを返します。私の編集を確認してください。 – lamwaiman1988

関連する問題