python3.9.12を使っています。
プログラムのファイルはUTF-8の形式になっています。
以下のコードを実行時に、エンコードのエラーが出ます。
現象の意味がまだ分かっていないのですが、
なぜ起きるのでしょうか。
requestに入力する適切な辞書型の書き方は分かりますか。
C:\Users\pcuser\source_code\kensaku_project\flont_sub_jikkouy\app\search\api\apiexecute_test.py
上記で、コマンドから[python apiexecute_test.py]を実行しました。
・apiexecute_test.py import json def service_execute(function_id): request_data = get_request_data() # リクエストデータを取得する def get_request_data(): request_data = get_request_data_body() return request_data def get_request_data_body(): # JSON固定 バイナリ等受け取る場合は処理を分ける request = {"level":3,"parent_address_code":"01#101"} reqdata = request.decode('utf-8') reqdata_dic = json.loads(reqdata) return reqdata_dic if __name__ == "__main__": service_execute(7) ・エラー箇所 reqdata = request.decode('utf-8') AttributeError: 'str' object has no attribute 'decode'
このコードではそのエラーにはなりません。
実際に動かしてエラーが発生しているコードを提示してください。
TakaiY さん
実際に動かしているコードを質問に提示しました。
エラー箇所に書いてある reqdata = request.decode() がコードの中にないので、動かしていると思っているコードと実際に動いているコードが違うのではないでしょうか(つまり勘違い)
TakaiY さんの「このコードではそのエラーにはなりません」が正しいでしょう
quickquip さん TakaiY さん
質問を修正しました。
reqdata = request.decode()でも、reqdata = request.decode('utf-8')でも、
エラーになりました。実際に起きたものを質問に修正しました。
python apiexecute_test.py
を実行した場所が、
C:\Users\pcuser\source_code\kensaku_project\flont_sub_jikkouy\app\search\api
フォルダ(ディレクトリ)であることを確認してください。
そうでなければ、違う場所(コマンドを実行している場所)にあるコードを実行してしまっています。
もしくは、
C:\Users\pcuser\source_code\kensaku_project\flont_sub_jikkouy\app\search\api\apiexecute_test.py
が提示されたコードではありません。
よく確認してみてください。
修正後のものを見ました。それでもやはりおかしいです。
提示のコードであれば、エラーは
AttributeError: 'dict' object has no attribute 'decode'
となるはずです。 'str' ではありません。
コードとエラーが合わない件はおくとして、そもそもそのコードの部分でやろうとしていることは何ですか?
文字列にしても辞書にしてもdecode()メソッドは持っていません。
json文字列を辞書にしたいのではありませんか?
> reqdata = request.decode()でも、reqdata = request.decode('utf-8')でも、
> エラーになりました。実際に起きたものを質問に修正しました。
reqdata = request.decode()
にした時にエラーは変わりましたか?
エラーメッセージとコードが合っていないので、変わらなかったのではと思っています。
TakaiY さん quickquip さん
json文字列をdecode('utf-8')させる場合、decode('utf-8')させた結果、[{"level":3,"parent_address_code":"01#101"}]のように、変換されるようにしたいです。
エラーメッセージとコードの件は、再度、取り直して、質問を修正します。
json文字列 を pythonで扱える辞書にしたいということでしょうか?
pythonの辞書をjson文字列にしたいということでしょうか。
しかし、json文字列をdecode() することはできません。
コメントに「バイナリ等受け取る場合」とあり、これがbyte列であった場合、それを、文字列するために、decode() することはあります。 それと混同していませんか?
TakaiY さん
了解しました。ありがとうございます。
回答1件
あなたの回答
tips
プレビュー