前提
version python3.7
twitter.Apiでtwitterデータを取得し、csvに出力しているのですが、文字化けが発生します。
下記は例です。
しかしながら、printでの出力はtextが日本語で出力されます.
例)
print (tweet_list) ↓ 出力結果 id text 0 1200303994465181696 ... 公共交通機関使わないので \n\n#Peing #質問箱 https://t.co/elbd... 0 1200303980468817922 ... 3人連れて車でイオン行くのより2歳児1人連れて公共交通機関で街中行くほうが何万倍もしんどくて... 0 1200303845982662656 ... 公共交通機関で害児してる野郎を盗撮して家族に晒してやる\nおい音楽イヤホンもしないで流すんじ...
エンコードがおかしいと思い、ソースコードの一番下の
tweet_list.to_csv("結果.csv",index =false)
↓このように書き換えると
tweet_list.to_csv("結果.csv",index =false,encoding ='shift_jis')
エラーメッセージ全文
runfile('C:/Users/名前/Desktop/python/Twitter/twitter取得.py', wdir='C:/Users/名前/Desktop/python/Twitter') id ... text 0 1200305731137785857 ... ジャンクション辺りがやや... 0 1200305427264622592 ... 公共交通に市場原理を持ち込んだ戦犯だ…… 0 1200304401627275265 ... 公共交通機関で携帯マナーに... 0 1200304368542605312 ... 地元を悪く言うわけじゃないけど、公共交通機関... 0 1200304348892286976 ... 駐車場には限りがあるので、出来るだけ公共交通機関を利用してください。... 0 1200303994465181696 ... 公共交通機関使わないので... [10 rows x 4 columns] Traceback (most recent call last): File "<ipython-input-11-9c4a10f3f938>", line 1, in <module> runfile('C:/Users/名前/Desktop/python/Twitter/twitter取得.py', wdir='C:/Users/~~~/Twitter') File "C:\Users\名前\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile execfile(filename, namespace) File "C:\Users\名前\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "C:/Users/名前/Desktop/python/Twitter/twitter取得.py", line 271, in <module> tweet_list.to_csv("結果.csv",index=False,encoding='shift_jis') File "C:\Users\名前\Anaconda3\lib\site-packages\pandas\core\generic.py", line 3228, in to_csv formatter.save() File "C:\Users\名前\Anaconda3\lib\site-packages\pandas\io\formats\csvs.py", line 202, in save self._save() File "C:\Users\名前\Anaconda3\lib\site-packages\pandas\io\formats\csvs.py", line 324, in _save self._save_chunk(start_i, end_i) File "C:\Users\名前\Anaconda3\lib\site-packages\pandas\io\formats\csvs.py", line 356, in _save_chunk libwriters.write_csv_rows(self.data, ix, self.nlevels, self.cols, self.writer) File "pandas\_libs\writers.pyx", line 72, in pandas._libs.writers.write_csv_rows UnicodeEncodeError: 'shift_jis' codec can't encode character '\u2757' in position 123: illegal multibyte sequence
このようなエラーメッセージが出てきました。
そのため、絵文字等が文字化けの原因になっているのではないかと考えられるのですが、
###実現したいこと➡日本語でcsv内で表示できるようにしたい
下のソースコードのどの部分に絵文字などの文字化けする原因を削除する旨を記載すればよいのかわかりません。
どこの部分にエンコードをshift_jisにして絵文字などの文字化けする原因を削除する旨を記載すればよいでしょうか?
お手数ですが、ご教授いただければ幸いです。
該当のソースコード
if __name__ == '__main__': text=pd.DataFrame([[0,0,0,0]],columns=["id","created_at","@","text"]) list_=[] # キーワードで取得 getter = TweetsGetter.bySearch(u'公共交通') for tweet in getter.collect(total =x #欲しい数) text["id"] = tweet["id"] text["created_at"] = tweet["created_at"] text["@"] ="@"+tweet["user"]["screen_name"] text["text"] = tweet["text"] list_.append(text) text=pd.DataFrame([[0,0,0,0]],columns="id","created_at","@","text"]) cnt += 1 tweet_list =pd.concat(list_) tweet_list.to_csv("結果.csv",index =false)
補足情報(FW/ツールのバージョンなど)
長くなり、質問したい部分がわかりにくくなるので、twitterから取得するためのソースコードは省略してあります。
回答1件
あなたの回答
tips
プレビュー