前提・実現したいこと
初めまして。
Pythonの勉強を少し始めましたばかりなので色々と拙い説明になると思いますがご容赦ください。
Python を使用し、Twitterのデータを収集し、csvファイルにまとめようとしています。
様々なサイト様や書籍のおかげで、Twitterのデータを収集するまではできました。
問題はそれをcsvファイルにまとめるところです。
csvファイルに書き込みをすることはできたのですが…
1つのセルに1文字になったり、1つのセルに全て入ってしまったり、ごちゃごちゃになってしまいます。
自分ではこれ以上、分かりそうにないので、どなたか知恵をお貸し頂けないでしょうか。
理想
|ツイートID|投稿日|ユーザーID|投稿内容|
|:--|:--:|--:|
|ユーザー1のデータ|ユーザー1のデータ|ユーザー1のデータ|ユーザー1のデータ
|ユーザー2のデータ|ユーザー2のデータ|ユーザー2のデータ|ユーザー2のデータ
というように、ユーザー毎に行。データ毎に列を分けたいです。
発生している問題・エラーメッセージ
csvファイルに書き出しする際、予想と反した内容になってしまう。 例: 1つのセルに1文字(1045というデータの場合「1」「0」「4」「5」という様にセルが変わってしまいます) 1つのセルに全データ(各データ毎にセルを分けたいです) ごちゃごちゃになってしまう(弄りすぎて変な所で改行されたりしています) 下記に個人的には一番上手くできた物を載せます (1つのセルに1文字になってしまっていますが)
該当のソースコード
Python
1if __name__ == '__main__': 2 3 # キーワードで取得 4 getter = TweetsGetter.bySearch(u'検索キーワード') 5 6 for tweet in getter.collect(total = 3): 7 #標準モジュールcsvのインポート 8 import csv 9 try: 10 #書き込み Shift_JIS 11 with open('file.csv', 'w') as csvfile: 12 writer = csv.writer(csvfile, lineterminator='\n') 13 writer.writerow(['ツイートID', '投稿日', 'ユーザーID', '内容']) 14 writer.writerow('\n') 15 writer.writerow('{} {} {} {}'.format(tweet['id'], tweet['created_at'], '@'+tweet['user']['screen_name'],tweet['text'])) 16 writer.writerow('\n') 17 18 #起こりそうな例外のキャッチ 19 except (FileNotFoundError) as e: 20 print(e) 21 except (csv.Error) as e: 22 print(e) 23
試したこと
①
http://ailaby.com/twitter_api/
コチラを参考に、txtファイルでもやろうとしましたが、全て一列で並んだ形になってしまいます。
(txtファイルをExcelで読み込むつもりでやりました)
②
https://qiita.com/koara-local/items/0e56bc1e58b11e4d7a32
https://qiita.com/okadate/items/7b9620a5e64b4e906c42
pandas という物が有効と情報を得たので、コチラを参考に色々と試してみました。
syntax error が出て混乱したので止めました。
オマケ
時々、Twitterのデータを収集する際に文字が長いのか切れることがあります。
(Twitter上では 「私は今日、ご飯を食べた」なのに集めると「私は今日、ご飯を…」みたいに)
コードは①で上げた【http://ailaby.com/twitter_api/】とまるっきり同じなので
そういう仕様なのでしょうか?
現在の状況
umyu様、KojiDoi様、rinren様、LouiS0616様の助けを借り
・csvファイルではなく、txtファイルおよびtsvファイルで出力することに
・full_textを収集することに
→そのため、収集面は大丈夫になりました!ありがとうございます。
tsvファイルおよびtxtファイルを作成するところまで出来ました。
今度は、持ってきたfull_txtに改行コード等があることに気が付きました。
(Excelでインポートすると何かごちゃごちゃになるって言っていたのはコレが原因だったみたいです)
そのため、改行コードなどを消してしまうために"replace"を使おうと考えました。
中々上手くできないので、申し訳ありませんが、どなたかご教授頂けますと幸いです。
Python
1f.write(tweet['full_text'.replace('\r\n', '')])
というように書いたのですが、やはりツイートデータ1つ1つに
改行などを削除する様にはできないのですか?
今まで手に入った物は手作業でExcelに打ち込んでいたのですが…流石に数が多くて。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/12 04:34
2018/02/12 04:52
2018/02/12 06:00
2018/02/13 03:58
2018/02/13 04:56