- ベストアンサー
pythonとtwitter
今pythonを使ってtwitterと通信させる勉強をしています。 特定のユーザのツイートを読み取り、それをテキストファイル(.txt)に変換して保存をしたいのですが、なかなかうまくいきません。 特定のユーザのツイートをpythonで取ってくることはできている状態です。 どなたかアドバイスまたはヒントを頂けないでしょうか。教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
そのように書いてあると > ・Unicode文字列と文字列の違い > 扱いを間違えると、文字化けしたりエラーになったりする だということがはっきりして、解決方法もすぐにわかります。 Unicode文字列をそのままwriteしようとするときに、ascii以外の文字(日本語等)があると、asciiに変換できないためにエラーになります。 対策は、出力する文字コードを明示して、Unicode文字列を的確に変換することです。 次のいずれか一方を使います。 方法1) open ではなく codecs.open を利用して、出力文字コードを指定して開く http://docs.python.jp/2.6/library/codecs.html#codecs.open 方法2) Unicode文字列をencodeメソッドで通常文字列に変換する http://docs.python.jp/2.6/library/stdtypes.html#str.encode この辺りは、Pythonで日本語を扱う際に、避けては通れないところです。 UnicodeEncodeError UnicodeDecodeError あたりをキーワードに検索して、原理を勉強しておいた方がよいです。 ところで、このプログラム for tweet in timeline: でループする度に、 test.txt に上書きしていますので、最後のつぶやきしか残りません。
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
「なかなかうまくいきません」 というのが一番困る質問です。 何がどのように「うまくいかない」のでしょうか? ・エラーになる →その時のメッセージは? ・文字化けする →高機能なテキストエディタや、バイナリエディタ、文字コード判定ツール等で確認すれば、なにかわかるかもしれない ・txtファイルが空 →本当に出力できているのか? ・ファイルそのものが無い →保存場所はどこ? それぞれの現象毎に、対処方法が違います。 また、Python固有の問題として ・Pythonのバージョンは? Ver2.?からVer3.?になったときに、大きく変更されました。 2と3を間違えると、期待通りの動作をしません。 ・Unicode文字列と文字列の違い 扱いを間違えると、文字化けしたりエラーになったりする
補足
回答ありがとうございます。 そうですよね、ご指摘ありがとうございます! #!/usr/bin/env python #-*- cording: utf-8 -*- import twitter consumer_key = '******' consumer_secret = '******' access_token_key = '******' access_token_secret = '******' api = twitter.Api(consumer_key=consumer_key, consumer_secret=consumer_secret, access_token_key=access_token_key, access_token_secret=access_token_secret) timeline = api.GetUserTimeline('*******') for tweet in timeline: f = open('test.txt', 'w') f.write(tweet.text) f.close test.txtという空のテキストファイルをつくって、これに読み込んだツイートを書き込むようにしたいのですが・・・ これを実行すると、 f.write(tweet.text) UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128) とエラーが出てきてしまう状態です・・・。
お礼
ありがとうございます!codecs.openを利用して、txtファイルにツイートを出力することができました! test.txtを読み込む際に、’w’ではなく’a’で読み込んだら、全てのツイートを出すことができました。