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

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

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

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

Python

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

Q&A

解決済

3回答

4228閲覧

pythonでjsonファイルの2階層目の情報を抜き取りたい。

icemanstanding

総合スコア73

JSON

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

Python

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

0グッド

0クリップ

投稿2021/06/23 14:40

編集2021/06/23 15:54

リンク内容

記載したjsonファイルを初めて操作しています。

下記コードで、1階層目までは抜き取れたのですが、
本当はlatとlonの各値を抜き取りたいのですが。2階層目にあって、
どうやって抜き出していいか上手くいきません。

どなたかアドバイスをお願いします。

{'text': '*****', 'code': '****', 'point': {'lat': 35.99999999, 'lon': 139.999999999}, 'kana': '***********', 'addressText': '************** ', 'zipcode': '105-6402', 'phoneNumber': '********', 'genre': {'code': '0014000180', 'text': '********'}, 'detail': None, 'language': None, 'arrivalInfo': [{'text': '出入口', 'kana': 'デイリグチ', 'exittype': {'code': '99', 'text': '未調査'},}
import json json_file = open('./INPUT/サンプル.json', 'r') json_object = json.load(json_file) json_object = json.loads(json_object) with open('out.csv', 'w', encoding="cp932",newline='') as f: # dialectの登録 csv.register_dialect('dialect01', doublequote=True, quoting=csv.QUOTE_ALL) # DictWriter作成 writer = csv.DictWriter(f, fieldnames=target_dicts[0].keys(), dialect='dialect01') # CSVへの書き込み writer.writeheader() for target_dict in target_dicts: writer.writerow(target_dict)

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

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

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

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

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

guest

回答3

0

ベストアンサー

python

1url='https://drive.google.com/uc?export=download&id=1w4eno4PKAj8Xh785WyMIRlTReajxGs8z' 2 3import pandas as pd 4import requests 5import json 6import io 7 8r=requests.get(url) 9 10json_object = json.load(io.BytesIO(r.content)) 11json_object=json.loads(json_object) 12 13 14for j in json_object["item"]: 15 lat , long=j["point"]["lat"],j["point"]["lon"] 16 print("lat:{},long:{}".format(lat,long))

最終的な形がわからなかったので、表示だけしてみました。
item配列下のpointlatlonがあるので、このようにループで取り出していけばいいと思います。

投稿2021/06/24 09:52

toshikawa

総合スコア388

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

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

icemanstanding

2021/06/24 15:38

御礼が遅れてスイマセン。助かりました。
guest

0

json_object = json.load(json_file) のあと、
json_object["point"]["lat"], json_object["point"]["lon"] で参照できます。

投稿2021/06/23 14:44

yh1224

総合スコア653

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

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

icemanstanding

2021/06/23 14:51

早速の回答ありがとうございました。ですがKeyerrorがでてしまいました。 ”point”はあるはずなのに・・・・ KeyError Traceback (most recent call last) <ipython-input-1-106d3ca5628c> in <module> 4 json_object = json.load(json_file) 5 json_object = json.loads(json_object)   6 json_object["point"]["lat"] 7 json_object["point"]["lon"] 8 KeyError: 'point'
yh1224

2021/06/23 14:55

json_object = json.loads(json_object) は不要です。 (これは何を意図した処理でしょうか?)
icemanstanding

2021/06/23 15:11

json.loadsd()で文字列認識がlist認識になると、どこぞのHPでみて試してみた内容です。 消してみましたが、こんどはインデックスが整数でない とエラーが出てしまいました。 下流を変更したのにエラーが変わるなんて。 3 json_file = open('./INPUT/サンプル3.json', 'r') 4 json_object = json.load(json_file) ----> 5 json_object["point"]["lat"] 6 json_object["point"]["lon"] 7 TypeError: string indices must be integers
yh1224

2021/06/23 15:23

すいません、json ファイルの中身を推測して回答していましたが、違っていたかもしれません。 サンプル.json ファイルの中身を教えて下さい。
icemanstanding

2021/06/23 15:55 編集

夜中まですいません。リンクを追加しました。コンビニの情報ファイルです。
yh1224

2021/06/24 03:02

見えません。
yh1224

2021/06/24 11:13

別の方が答えてくださってますね。
guest

0

"point":{ と } をデータファイルから、エディッタで削除して、”lat”と”lon”を
強引に1階層目に持ってきた。(邪道)
今回はこれで乗り切りますが、次回からは正規の読み込みを行いたく。
引き続きアドバイスをお願いします。

投稿2021/06/23 17:25

編集2021/06/23 22:28
icemanstanding

総合スコア73

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問