確か、APIレスポンスやファイル内から取得したデータをreplaceメソッドなどで変換しようとしたときに発生したエラーだったと思います。
プロトタイプ的に実装していた時だったので、あまり型チェックなどを意識しておらず、対象の変数がbytes型なのに、引数の文字列はstr型であるために発生したようです。
その時のエラー内容と対処方法を残しておきます。
エラー発生コードとエラーメッセージ
コード
test = test.replace('\'', '\'\'')
エラーメッセージ
TypeError: a bytes-like object is required, not 'str'
エラーの内容としては、「str」ではなく、バイトのようなオブジェクトが必要だよというような意味です。
bytes型のまま取り扱うのであれば、以下の対処方法を行えばよいはずです。
対処方法
str型ではなくbyte型にする。(単純な対処法は、bをつける)
例:どこかのAPIのurl
byte_test = b'https://api.~~~.go.jp/rest/2.0/app/getStatsData~~~'
test = test.replace(byte_test, b'~~~')
なお、文字列の置換とかは、strのままの方がよいことがあ多いので、decodeする方がわかりやすくなるかと思います。
例:
str_test = 'https://api.~~~.go.jp/rest/2.0/app/getStatsData~~~'
test = test.decode()
test = test.replace(str_test, '~~~')
str → bytesはencode
bytes → strはdecode
コメント