質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Q&A

1回答

280閲覧

jsonファイルで出力したい

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

0グッド

0クリップ

投稿2022/09/16 08:51

###前提
twitterapiを利用してtweetの取得はできています

実現したいこと

特定のキーワードで出力した結果をjsonファイルで出力したい

ソースコード

python

1import json 2 3nyankoTextlist=[json.loads(tweet)["text"] for tweet in open("20220728-00.json", "r")] 4kensaku_go="猫" 5 6for tweet in nyankoTextlist: 7 if "猫" in tweet: 8 print(tweet) 9 10 11print(sum([1 if kensaku_go in i else 0 for i in nyankoTextlist])) 12

試したこと

jsonファイルでどう出力するかは試せてません。

補足情報(FW/ツールのバージョンなど)

VMWAREでの仮想マシン
OS ubuntuです
猫を含むツイートのテキストは出力できてます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2022/09/16 08:55

どういう形のjsonにしたいかが書かれていません
quickquip

2022/09/16 09:01

20220728-00.json は1行が1つのJSON(いわゆるJSON Lines形式)で、条件に合致した行だけ残したいという感じでしょうか それならそのように質問を書き直すとよいかと思います
退会済みユーザー

退会済みユーザー

2022/09/19 01:09

返信が遅れて申し訳ありません。 そうですね。もう一度質問を書き直させて頂きます。
guest

回答1

0

以下のように、渡したいデータを dict 型にしてやるとうまくいくかと思いますが、いかがでしょうか。

python

1import json 2 3def main(): 4 value : dict ={ 5 'key1': 'value1', 6 'key2': 'value2', 7 'key3': 'value3' 8 } 9 10 with open('./test.json', 'w') as f: 11 json.dump(value, f, indent=4) 12 return 13 14if __name__ == '__main__': 15 main()

[2022/09/19 追記]
ご確認ありがとうございます。
どうやら読み込みもうまくいっていなかったようですね。

nyankoTextlist=[json.loads(tweet)["text"] for tweet in open("20220728-00.json", "r")]
まず、json.loads について、この関数に渡す引数は dictをあらわした文字列 (例:'{"key":value}') でなければいけないようです。
そして、上記のコードについて、
json.loads(tweet) にはファイルで読み込んだ1行ずつが渡っているようで、このためうまく読み込めてないと思います。
以下のような感じでファイルを一気に読み込んでdictにした後、キーワード判定してやればよいかと思います。

python

1#jsonファイルを読み込みdictにする 2with open('0220728-00.json','r') as f: 3 read_dict = json.load(f) 4 5# dict の値をそれぞれ確認してキーワードに合致するもののみを抜き出す 6MODE_KEY = 0 7MODE_VALUE = 1 8mode = MODE_KEY # ここで keyrord と key を比較するか、keyword と value を比較するか設定する 9keyword = '猫' 10write_dict:dict= {} 11# ※ dict の key 、value どちらを比較するかわからなかったので、両方に対応しています。 12for k in read_dict.keys(): 13 if mode == MODE_KEY and k == keyword: 14 write_dict.update({k:read_dict[k]}) 15 elif mode == MODE_VALUE and read_dict[k] == keyword: 16 write_dict.update({k:read_dict[k]}) 17 18# 編集したdictをファイルに書き込む 19#### 先日お伝えした上記コードを、頑張って組み合わせてみてください ####

投稿2022/09/17 06:12

編集2022/09/19 06:29
guigui55

総合スコア77

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/09/19 02:30

まだ、python勉強中の身なのですが、 tweetのjsonファイルの中身って、  { tweet_id : 12783798 } みたいになっていて、 このとき、「tweet_id」がkey, 12783798がvalue(=中身)だと考えてます。 import json nyankoTextlist=[json.loads(tweet)["text"] for tweet in open("20220728-00.json", "r")] kensaku_go="猫" for tweet in nyankoTextlist: if "猫" in tweet: print(tweet) def main(): value : dict ={ 'tweet_id': 'text', } with open('./20220728-00.json', 'w') as f: json.dump(value, f, indent=4) return if __name__ == '__main__': main() こんな感じでいいでしょうか?
guigui55

2022/09/19 06:30

ご確認ありがとうございます、ソースを含みましたので回答に追記しました。
退会済みユーザー

退会済みユーザー

2022/09/19 10:07

アドバイスありがとうございます。頑張って組み合わせていきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問