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

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

新規登録して質問してみよう
ただいま回答率
85.35%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

3549閲覧

絵文字を含むjsonファイルをpythonで読み込みたい

unisara

総合スコア8

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/06 02:04

編集2021/06/06 03:15

別プログラムで出力されたjsonファイルをpythonで読み込みたいのですが、https://lets-emoji.com/emojilist/のような絵文字が含まれているためか
data = json.load(fileopen)の部分でエラーになります。

できれば絵文字のまま扱いたいんですが、可能なんでしょうか?
ご教示いただきたいです。

import json filename = '[ファイル名]' # json拡張子 fileopen = open(filename, mode='r') data = json.load(fileopen) fileopen.close() print(data)

エラーの内容

Traceback (most recent call last): File "[パス]/getjson.py", line 5, in <module> data = json.load(fileopen) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/__init__.py", line 293, in load return loads(fp.read(), File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/__init__.py", line 346, in loads return _default_decoder.decode(s) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 340, in decode raise JSONDecodeError("Extra data", s, end) json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 787)

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

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

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

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

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

y_waiwai

2021/06/06 02:09

エラーが出るならエラーメッセージを提示しましょう
meg_

2021/06/06 02:16

> data = json.load(fileopen)の部分でエラーになります。 どんなエラーでしょうか?
unisara

2021/06/06 03:16

申し訳ありません。 エラー内容追記しました。
can110

2021/06/06 03:26

実際のファイルの内容、先頭2行程度をテキストとして提示することは可能でしょうか? 絵文字の有無とは関係なく、ファイル内容がJSON形式ではなくJSON Lines形式であることが原因ではないかと推測しています。
meg_

2021/06/06 03:26

json.loads(XXXX, strict=False) とした場合はどうなりますか?
unisara

2021/06/06 04:59

>実際のファイルの内容、先頭2行程度をテキストとして提示することは可能でしょうか? >絵文字の有無とは関係なく、ファイル内容がJSON形式ではなくJSON Lines形式であることが原因ではな>いかと推測しています。 内容はTwitterのスクレイピングなので、以下にUPします。 2レコード分です。 {"id": 1401157435599978503, "conversation_id": "1401157435599978503", "created_at": "2021-06-05 21:42:19 JST", "date": "2021-06-05", "time": "21:42:19", "timezone": "+0900", "user_id": 814893804, "username": "__aomickey", "name": "©️", "place": "", "tweet": "うちわ忘れないように早めに福岡の荷造りしたい!!!!!!←気持ちだけ", "language": "ja", "mentions": [], "urls": [], "photos": [], "replies_count": 0, "retweets_count": 0, "likes_count": 0, "hashtags": [], "cashtags": [], "link": "https://twitter.com/__aomickey/status/1401157435599978503", "retweet": false, "quote_url": "", "video": 0, "thumbnail": "", "near": "", "geo": "", "source": "", "user_rt_id": "", "user_rt": "", "retweet_id": "", "reply_to": [], "retweet_date": "", "translate": "", "trans_src": "", "trans_dest": ""} {"id": 1401157435587366912, "conversation_id": "1401155524242993153", "created_at": "2021-06-05 21:42:19 JST", "date": "2021-06-05", "time": "21:42:19", "timezone": "+0900", "user_id": 1254788761705054217, "username": "mei_uo__ou", "name": "めいς➹", "place": "", "tweet": "@sub_sera でぃふぃとばんちょーの差wwwww ばんちょーのこと好きすぎかw 可愛すぎます????", "language": "ja", "mentions": [], "urls": [], "photos": [], "replies_count": 0, "retweets_count": 0, "likes_count": 0, "hashtags": [], "cashtags": [], "link": "https://twitter.com/mei_uo__ou/status/1401157435587366912", "retweet": false, "quote_url": "", "video": 0, "thumbnail": "", "near": "", "geo": "", "source": "", "user_rt_id": "", "user_rt": "", "retweet_id": "", "reply_to": [{"screen_name": "sub_sera", "name": "ς➹:せ????‼️", "id": "853707596355608576"}], "retweet_date": "", "translate": "", "trans_src": "", "trans_dest": ""}
unisara

2021/06/06 05:00

>json.loads(XXXX, strict=False) とした場合はどうなりますか? 以下のエラーが出ました。 Traceback (most recent call last): File "/[パス]/getjson.py", line 5, in <module> data = json.load(fileopen, strict=False) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/__init__.py", line 293, in load return loads(fp.read(), File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/__init__.py", line 359, in loads return cls(**kw).decode(s) File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/json/decoder.py", line 340, in decode raise JSONDecodeError("Extra data", s, end) json.decoder.JSONDecodeError: Extra data: line 2 column 1 (char 851)
guest

回答1

0

ベストアンサー

元のファイルがJSON Lines形式であるようです。
すなわち1行がjson形式として完結した形式であり、一般的なjson形式ではありません。
以下のように1行毎にjson形式として処理すればよいかと思います。

Python

1 2import json 3 4with open('inp.json', encoding='utf-8') as f: 5 js = f.readlines() 6 7ds = [] 8for j in js: 9 ds.append( json.loads(j)) 10 11print(ds) 12""" 13[{'id': 1401157435599978503, 'conversation_id': '1401157435599978503', 'created_at': '2021-06-05 21:42:19 JST', 'date': '2021-06-05', 'time': '21:42:19', 'timezone': '+0900', 'user_id': 814893804, 'username': '__aomickey', 'name': '©️', 'place': '', 'tweet': 'うちわ忘れないように早めに福岡の荷造りしたい!!!!!!←気持ちだけ', 'language': 'ja', 'mentions': [], 'urls': [], 'photos': [], 'replies_count': 0, 'retweets_count': 0, 'likes_count': 0, 'hashtags': [], 'cashtags': [], 'link': 'https://twitter.com/__aomickey/status/1401157435599978503', 'retweet': False, 'quote_url': '', 'video': 0, 'thumbnail': '', 'near': '', 'geo': '', 'source': '', 'user_rt_id': '', 'user_rt': '', 'retweet_id': '', 'reply_to': [], 'retweet_date': '', 'translate': '', 'trans_src': '', 'trans_dest': ''}, {'id': 1401157435587366912, 'conversation_id': '1401155524242993153', 'created_at': '2021-06-05 21:42:19 JST', 'date': '2021-06-05', 'time': '21:42:19', 'timezone': '+0900', 'user_id': 1254788761705054217, 'username': 'mei_uo__ou', 'name': 'めいς➹', 'place': '', 'tweet': '@sub_sera でぃ ふぃとばんちょーの差wwwww ばんちょーのこと好きすぎかw 可愛すぎます????', 'language': 'ja', 'mentions': [], 'urls': [], 'photos': [], 'replies_count': 0, 'retweets_count': 0, 'likes_count': 0, 'hashtags': [], 'cashtags': [], 'link': 'https://twitter.com/mei_uo__ou/status/1401157435587366912', 'retweet': False, 'quote_url': '', 'video': 0, 'thumbnail': '', 'near': '', 'geo': '', 'source': '', 'user_rt_id': '', 'user_rt': '', 'retweet_id': '', 'reply_to': [{'screen_name': 'sub_sera', 'name': 'ς➹:せ????‼️', 'id': '853707596355608576'}], 'retweet_date': '', 'translate': '', 'trans_src': '', 'trans_dest': ''}] 14"""

投稿2021/06/06 05:09

can110

総合スコア38341

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

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

unisara

2021/06/06 06:51

ありがとうございます。 絵文字のまま無事データ取得できました。 勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問