2016-07-27 8 views
0

みんな! 私はのpython3(pycharm)を使用して、私のコードは、これらのようなものです:私はいくつかの中国語の単語のtest.CSVである場合UnicodeEncodeError: 'latin-1'コーデックは0〜5桁の文字をエンコードできません:序数は範囲外です(256)

# -*- coding: utf-8 -*- 
import numpy 

c=numpy.loadtxt('test.csv',dtype="str_",delimiter=',',usecols=(6,),unpack=True) 

は、私が得た、このようなエラー:私は試してみました

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-5: ordinal not in range(256) 

このように、ファイルをエンコードするために:

IndexError: list index out of range 
012:その後、

c=numpy.loadtxt('test.csv'.encode('utf-8'),dtype="str_",skiprows=0,delimiter=',',usecols=(6,),unpack=True) 

とを、私は別のエラーが発生しました

また、ファイル内の中国語の単語が64

よりも長く、私はこれに多くの時間を無駄に持って、私の手を教えてください!

答えて

0

我々はに漢字を読んだときnumpyの場合、UTF-8文字を保持するのに十分な長さではないASCII文字として扱われるため、データ型は単純な文字列にはなりません。

私がここでやったことは、ユニコード文字を保持するのに十分である代わりに4バイト文字を読み込んでいることをnumpyに知らせることです。

私はテストのために次のサンプルデータを使用しています

# -*- coding: utf-8 -*- 
import numpy 
c=numpy.genfromtxt('test.csv',dtype="S4",delimiter=',',usecols=(6,),unpack=True) 

for txt in c: 
    print(txt.decode("utf-8")) 

あなたはさらに多くを学ぶために、以下のリンクを確認することができます:
1ここで

1,2,3,4,5,6,7 
一,二,三,四,五,六,七 

は、私が使用しているコードです。 How many bytes does one Unicode character take?

+0

私のCSVでは、7を読むことはできますが、七を読むことはできません。 'utf-8'コーデックは、位置0のバイト0xd5をデコードできません:無効な継続バイト ' – Robin

+0

こんにちは、Robin、あなたのテストCSVファイルのコンテンツを共有しますか? –

+0

ところで、テスト用のCSVをutf-8形式で保存しましたか? –

0
with open('test.csv', encoding='utf-8') as fh: 
    numpy.loadtxt(fh, dtype="str_", delimiter=',', usecols=(6,), unpack=True) 
+0

ここで新しいエラーがあります。 'UnicodeDecodeError:' utf-8 'コーデックは、位置0のバイト0xceをデコードできません:無効継続バイト' – Robin

関連する問題