2016-12-03 7 views
0

お手数ですが、文字エンコードに問題があります

私は、その後の分析のためにイタリア語twitterersからツイートをダウンロードしています。 一度読み込まれると、私はそれらをPythonのデータフレームに格納し、ファイルに書き出します。

ファイルに書き込むと、イタリア語で存在する "è"のような特殊文字は、X8/XEなどの文字に変換されます。

utf8、Latin1、またはISO-8859-1のようないくつかのエンコーディングを試しましたが、問題は解決しません。

データフレームの各行は、名前、画面、名前、説明などの異なる情報を持つユーザーで、問題が発生しているフィールドです。ここで

は、私は、既存のデータフレームにユーザーを追加するために使用するライン行く:

b=pd.DataFrame(np.array([[user.id, 
          user.created_at, 
          user.lang.encode('utf-8'), 
          user.screen_name.encode('utf-8'), 
          user.name.encode('utf-8'), 
          user.location.encode('utf-8'), 
          user.description.encode('utf-8'), 
          user.followers_count,       
          user.profile_image_url_https.encode('utf-8')]]), columns=col).append(b, ignore_index=True) 

をそして、これは私が

b.to_csv(filename, encoding="utf-8") 

だけからダウンロードした後、ファイル内の情報を書き込む方法ですTwitterのデータフレームでは、例えば、私は読むことができます:

"La vitaèun'opportunità... coglila"

が、ファイルにそれはに変換されます:

B "ラ・ヴィータ\ XC3 \ xa8 un'opportunit \ XC3 \ XA0 ... coglila"

私は何をすべきそれを元の文字列に戻すには???

+0

b['series_name'] = b['series_name'].str.decode('utf-8') 

をし、任意のエンコードせずにCSVに保存しますファイルにデータを保存するには?バイナリモードを使用していますか? – user312016

+1

これは、文字列をいわゆる「バイナリ文字列」に変換しています。 'b" La vita \ xc3 \ xa8 un'opportunit \ xc3 \ xa0 ... coglila ".decode( 'utf-8')'を呼び出すことで、これらを通常の文字列に変換することができます。 –

+0

印刷する場合は、バイトテキストを正しく表示する必要があります。 – sirfz

答えて

0

utf-8にエンコードしたりデコードしたりしないで試しましたか?これは箱の中でうまくいくはずです。 あなたは本当にすべてのシリーズに.str.decode()メソッドを使用し、その後、それらをデコードする場合:あなたがしようとしているどのように

b.to_csv(filename) 
+0

こんにちは、私は別の問題が発生していたので、コーディングを導入しなければなりませんでした。いずれにしても、私たちは正しい方向に進んでいます。コマンド "La vita \ xc3 \ xa8 un'opportunit \ xc3 \ xa0 ... coglila" .decode( 'utf-8')は完全に動作します。しかし、コマンドb ['series_name'] = b ['series_name']。str.decode( 'utf-8')は実行されません。私はこれが['series_name']にSTRING "b'La vita \ xc3 \ xa8 un'opportunit \ xc3 \ xa0 ...が含まれているからだと思います。" coglila '"バイナリ文字列ではありません.... AGGGGHHHH !!! :-) – user3623123

+0

いずれにしても私はそれを得ません:私はcvsファイルを読むとき、私は "utf-8"というエンコーディングを使います。 A = pd.read_csv(filename、encoding = "utf8")それ自体をデコードする必要があります! – user3623123

+0

次に、user.lang.encode( 'utf-8')の代わりにdataframe:user.lang.decode( 'utf-8')を作成するときにデコードしてみてください。待って、あなたは(user.lang)をタイプするとどんなタイプが得られますか? –

関連する問題