###### tags: `Python勉強会` # 【50期】Python勉強会 第7回 :::info **<第7回Web会議日程>** 2023年05月17日(水) 19:00から ::: ## 第7回 課題 ### ・課題の前に。。。 <details> <summary>修正箇所</summary> <br> 各自第6回で対応したLambdaに以下の修正を追加してください。 #### ①lambdaに「s3_function.py」というファイルを新規追加 ・「NewFile」をクリック  ・展開した「s3_function.py」を反映し、「Save As...」をクリック ※14行目の「fm_pys_XXX.json」は各自の番号に変更してください  ・FileNameに「s3_function.py」と入力し、「Save」をクリック  ・「<span style="color:blue">lambda_function.py</span>」で「s3_function」をインポート ```python import s3_function ``` #### ②頻出処理の変数化 ・IF分の前で、LINEの入力内容を「from_text」として定義 ```python from_text = json.loads(event['body'])['events'][0]['message']['text'] ``` ・IF分の後で、LINEへの応答文字列を「to_text」として定義 ```python params['messages'][0]['text'] = to_text ``` #### ③入力内容が「入力」「出力」から始まった場合の分岐追加 ・各自の関数の最後のELIFの後に、以下の記述を追加 ```python # LINEで入力内容が「入力」から始まった場合 elif from_text.startswith('入力'): # s3_functionモジュールのs3_input関数を呼び出す to_text = s3_function.s3_input(from_text) # LINEで入力内容が「出力」から始まった場合 elif from_text.startswith('出力'): # s3_functionモジュールのs3_output関数を呼び出す to_text = s3_function.s3_output(from_text) ``` </details> ### ・課題 **現在、「<span style="color:blue">lambda_function.py</span>」は、以下のようにLINEで入力した場合、** **2行目をキー、3行目を値としたJSONファイルをS3に書き込みます。**  **上記に以下のようにLINEで入力した場合、S3のJSONファイルを読み込み、** **キーに対応する値をに応答する処理を追加してください**  ----- ### ・前回からの変更点  ①個人のスマホからLine公式アカウントにメッセージ送信 ②Line公式からWebhookしたAPI GatewayのURLへメッセージを送信 ③API Gatewayに関連付けられたLambdaを呼び出し <span style="color:red">④S3にあるファイルを読み込み</span> ⑤Lambdaで作り込んだ処理に沿ってメッセージを応答 ------ ### ・「<span style="color:blue">s3_function.py</span>」概要 #### 1 . S3ファイル読み込み S3にある「fm_pys_XXX.json」を読み込み、 jsonデータをPython処理のため辞書型として変数「json_data」に格納 #### 2 . s3_input関数を定義(入力内容をS3に書き込む) LINEの入力内容が「入力」から始まった場合(startswith)の処理を定義 ```python '入力\n明日の予定\n仕事' ``` 入力内容を改行コードで区切って変数「str」にリスト型で格納 ```python ['入力', '明日の予定', '仕事'] ``` 「str」の要素数が2より大きい場合、3要素目以降をfor文で変数「Register」に追記 「json_data」にリストの2要素目をキー、「Register」を値とした辞書型の要素を追加 ```python {'明日の予定': '仕事'} ``` 「json_data」をjson形式に置換し、S3にアップロード ------ ### ・JSONについて :::warning **<JSONとは>** 「JavaScript Object Notation」の略で、「JavaScriptのオブジェクトの書き方を元にしたデータ定義方法」のこと **<JSONの形式>** ・{} の中にキーと値をコロンで区切って記述 ・カンマで区切ると、キーと値の組み合わせを複数記述可能 ・[]を使うことで配列の表現も可能 ⇒Pythonでは、**辞書型**として取り込むことが可能 ::: ### ・ヒント <details> <summary>ヒント</summary> ・LINEの入力内容が「出力」から始まった場合に実行される「s3_output」関数の処理を修正してください。 ・LINEの入力内容を改行コードで区切って、2要素目をキーとして利用してください ・「json_data」に辞書形式でデータが格納されているため、入力内容2行目をキーとして辞書から値を取り出してください </details>
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up