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

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

ただいまの
回答率

87.49%

Pythonでの辞書の扱いについて

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 684

score 19

現在、Pythonを使っております。
googlemapAPIを使い、クチコミを収集した後、形態素解析を行いたいのですが、収集の部分でわからないことができました。

# Google公式モジュールの外部googlemapsをインポート(googlemapsのディレクトリ内にPlaces APIのモジュールファイルがある)
# テキスト出力を整える標準ライブラリpprintをインポート
import googlemaps
import pprint

# 事前に取得したAPI_KEYの設定
gmaps = googlemaps.Client(key = "AIzaSyCjc0xxgy1oBS0F4uQgru0AxTrhZW-qoMs")

place_id = "ChIJeQiJANeMGGAR8zaGpVXXXz4"
print(place_id)

#places.py内のdetailsを呼び出し(モジュール名はplaceなだけで実際はdetails)
results = gmaps.place(place_id,language = "ja")

pprint.pprint(results)

#クロールしたデータを表示
print("place_id:" + str(place_id) + "から計5件のクチコミデータを収集し、データベースに格納しました。")
print("クロールしたクチコミ表示します。")
print("=============================================================================================")

#pprint.pprint(results)
pprint.pprint(results['result']['reviews'][0]['text'])

以下、出力結果です。

ChIJeQiJANeMGGAR8zaGpVXXXz4
{'html_attributions': [],
 'result': {'address_components': [{'long_name': '6F/7F',
                                    'short_name': '6F/7F',
                                    'types': ['floor']},
                                   {'long_name': '160-0023',
                                    'short_name': '160-0023',
                                    'types': ['postal_code']}],
            'adr_address': '<span class="country-name">日本</span>、<span '
                           'class="postal-code">〒160-0023</span> <span '
                           'class="region">東京都</span><span '
                           'class="street-address">新宿区西新宿1丁目3−1 '
                           '新宿サンフラワービル</span> 6F/7F',
            'formatted_address': '日本、〒160-0023 東京都新宿区西新宿1丁目3−1 新宿サンフラワービル '
                                 '6F/7F',
            'formatted_phone_number': '03-3348-8676',
            'geometry': {'location': {'lat': 35.6933679, 'lng': 139.6988554},
                         'viewport': {'northeast': {'lat': 35.6947168802915,
                                                    'lng': 139.7002043802915},
                                      'southwest': {'lat': 35.6920189197085,
                                                    'lng': 139.6975064197085}}},
            'icon': 'https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png',
            'id': '845f73e8850d8500fb830f6f7ee5810d63eaf1e2',
            'international_phone_number': '+81 3-3348-8676',
            'name': 'やきにく亭 六歌仙',
            'opening_hours': {'open_now': True,
                              'periods': [{'close': {'day': 1, 'time': '0500'},
                                           'open': {'day': 0, 'time': '1100'}},
                                          {'close': {'day': 0, 'time': '0500'},
                                           'open': {'day': 6, 'time': '1100'}}],
                              'weekday_text': ['月曜日: 11時00分~5時00分',
                                               '火曜日: 11時00分~5時00分',
                                               '水曜日: 11時00分~5時00分',
                                               '木曜日: 11時00分~5時00分',
                                               '金曜日: 11時00分~5時00分',
                                               '土曜日: 11時00分~5時00分',
                                               '日曜日: 11時00分~5時00分']},
            'photos': [{'height': 3024,
                        'html_attributions': ['<a '
                                              'href="https://maps.google.com/maps/contrib/100838059437191233064/photos">@ '
                                              'Your Service TICK.Y</a>'],
                        'photo_reference': 'CmRaAAAAK1IVdP5iqgzCoih7Rxb4aGiPTAXei1hsh4wRE_NFiXplafnzyycYWKGexnkUCretWRgQZYQTaC8FjcOsxDINgUXq3HLBbjCo9ixEEqZIE73IaGHr83uSogVufgRKORqlEhBqsq6x8K3lTFZkUKgbRnALGhSqFwFBPPeqJx5-6obY7irs7b2b4A',
                        'width': 4032},
                       {'height': 3024,
                        'html_attributions': ['<a '
                                              'href="https://maps.google.com/maps/contrib/110503178894234777463/photos">Sirinart '
                                              'Sukpaen</a>'],
                        'photo_reference': 'CmRaAAAAMigHRE_H1fvrGrAJwO-A_W8ivC3hUm3b-a73_SOBM6X3AU9AoIjHnjS-qc0Grg4HYKUVPwjTgjnn_ptq9JcfkxhrT_3ySlher9eAJCIB-95Hx2drM7zEF_L18Mrf9VpoEhC1stbSphdmOSpOQYAqxOEcGhTMrtOHKh0yg3hmboTZv-2AXxtdkw',
                        'width': 4032}],
            'place_id': 'ChIJeQiJANeMGGAR8zaGpVXXXz4',
            'plus_code': {'compound_code': 'MMVX+8G 日本、東京',
                          'global_code': '8Q7XMMVX+8G'},
            'price_level': 3,
            'rating': 4.4,
            'reference': 'ChIJeQiJANeMGGAR8zaGpVXXXz4',
            'reviews': [{'author_name': 'わりひま',
                         'author_url': 'https://www.google.com/maps/contrib/102596340940577526074/reviews',
                         'language': 'ja',
                         'profile_photo_url': 'https://lh3.googleusercontent.com/-ImGYEtjeGvM/AAAAAAAAAAI/AAAAAAAAAAA/AGDgw-icT_eg8spdDVekCdZCIii66ROh1A/s128-c0x00000000-cc-rp-mo/photo.jpg',
                         'rating': 2,
                         'relative_time_description': '1 か月前',
                         'text': 'すき焼きが食べたくて調べていたら六歌仙が出てきたので行ってみました。すき焼きがコースでしかなく、一人8000円とコスパ悪いなと感じました。お肉がでかくてインパクトありましたが、正直食べ切れませんでした。コースよりも単品で食べたかったのですが単品注文がなく残念でした。お肉も美味しかったですが、期待以上でもなく期待以下でもない感じでした。',
                         'time': 1540512083},
                        {'author_name': 'R S',
                         'author_url': 'https://www.google.com/maps/contrib/111594010914201138339/reviews',
                         'language': 'ja',
                         'profile_photo_url': 'https://lh6.googleusercontent.com/-VAofMyevDYQ/AAAAAAAAAAI/AAAAAAAAAAA/AGDgw-hlARmjySldZQVcXxdXYky351q1IA/s128-c0x00000000-cc-rp-mo-ba3/photo.jpg',
                         'rating': 3,
                         'relative_time_description': '3 か月前',
                         'text': 'なかなか良コスパかなぁ。いやそうでもないかなぁ。一番安いコースなら8000円で2時間、死ぬほど肉を食えるので、食べ盛りとか大食いとか、そういう人たちにはおすすめ。でも予約が直前すぎると取りにくいのと中国人観光客が多すぎるのでそこのバランスを見てって感じですかね。',
                         'time': 1535455335},
                        {'author_name': '本田宗一',
                         'author_url': 'https://www.google.com/maps/contrib/108679199543695673976/reviews',
                         'language': 'ja',
                         'profile_photo_url': 'https://lh6.googleusercontent.com/-FIXG6ikwqxE/AAAAAAAAAAI/AAAAAAAAAAA/AGDgw-jbAiBVdSz-3nf935lh_cbUlACR4g/s128-c0x00000000-cc-rp-mo-ba5/photo.jpg',
                         'rating': 4,
                         'relative_time_description': '1 か月前',
                         'text': '会社の人と行きました。\n'
                                 '焼いてる奴は確か松阪牛のカルビだったと思います。とても旨かった(*^^*)\n'
                                 '店内、和な感じで店員さんは和服姿でとてもキレイでした。\n'
                                 'また行ってみたいのですが、結構お高いので頻繁には行けないなぁと思いました。',
                         'time': 1540633410},
                        {'author_name': 'tomohiro oohata',
                         'author_url': 'https://www.google.com/maps/contrib/100831211196169257723/reviews',
                         'language': 'ja',
                         'profile_photo_url': 'https://lh6.googleusercontent.com/-_FdCEB6vjMg/AAAAAAAAAAI/AAAAAAAAAAA/AGDgw-gGeSTcFahem6ajsCu0COjmhkCQZA/s128-c0x00000000-cc-rp-mo-ba6/photo.jpg',
                         'rating': 3,
                         'relative_time_description': '3 か月前',
                         'text': '高級な焼肉店。\n'
                                 'ランチはリーズナブルにいただける。\n'
                                 '\n'
                                 'ランチでMIX御膳(1620円)いただきました。\n'
                                 'カルビ3枚、ハラミ4枚のセット。\n'
                                 '美味しいお肉でした。\n'
                                 'サラダやナムル、鶏肉もついてボリューム満点。\n'
                                 '\n'
                                 'ごはん、スープお代わり自由。\n'
                                 '食後にはドリンクもある。',
                         'time': 1536202250},
                        {'author_name': 'CHAN BEA',
                         'author_url': 'https://www.google.com/maps/contrib/107143121036672060701/reviews',
                         'language': 'ja',
                         'profile_photo_url': 'https://lh3.googleusercontent.com/a-/AN66SAy_kQrXJqAcorhsA2ghSH4ww08BwQKpFeA9Y0iX=s128-c0x00000000-cc-rp-mo',
                         'rating': 5,
                         'relative_time_description': '1 週間前',
                         'text': 'お肉が柔らかくてとっても美味しい!!\n\n贅沢したいときに行きたいお店です',
                         'time': 1544102691}],
            'scope': 'GOOGLE',
            'types': ['restaurant',
                      'point_of_interest',
                      'food',
                      'establishment'],
            'url': 'https://maps.google.com/?cid=4494547715988272883',
            'utc_offset': 540,
            'vicinity': '新宿区西新宿1丁目3−1 6F/7F 新宿サンフラワービル',
            'website': 'http://www.rokkasen.co.jp/'},
 'status': 'OK'}
place_id:ChIJeQiJANeMGGAR8zaGpVXXXz4から計5件のクチコミデータを収集し、データベースに格納しました。
クロールしたクチコミを含む全データを表示します。
=============================================================================================
'すき焼きが食べたくて調べていたら六歌仙が出てきたので行ってみました。すき焼きがコースでしかなく、一人8000円とコスパ悪いなと感じました。お肉がでかくてインパクトありましたが、正直食べ切れませんでした。コースよりも単品で食べたかったのですが単品注文がなく残念でした。お肉も美味しかったですが、期待以上でもなく期待以下でもない感じでした。'

見にくくて申し訳ないのですが、出力結果の下から5行目より上が
pprint.pprint(results)
の出力結果で、
下から1行目が
pprint.pprint(results['result']['reviews'][0]['text'])
の部分の出力結果です。

やりたいこと

自分はresultsの中に格納された'text'の部分だけをすべて出力させたいのですが、クチコミの1番上のものしか出力されませんでした。
出力の部分の

pprint.pprint(results['result']['reviews'][0]['text'])


の部分がダメだと思いfor文など使い、解決を試みたのですが、初心者で知識不足なため上手くできませんでした。
よろしければ、正確な出力の仕方を教えていただければ幸いです。
よろしくお願いします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

for v in results['result']['reviews']:
    pprint.pprint(v['text'])

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/12/15 00:33

    ありがとうございます!
    解決しました!

    キャンセル

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

  • ただいまの回答率 87.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る