str型として登録されているバイト配列のデータを文字として表示する方法を教えて頂けますでしょうか。
あまりあり得ないパターンとは思いますが、データベースの 文字列型 のカラムにこのように入っておりまして、
取り出した時にstr型で取得されて中身が分からないので一括変換を試みております。
単純にbytes型の場合は下の通りにencodeすれば表示できたのですが、
元データが文字型の場合はどう前処理をすれば良いでしょうか?ハマってしまいました。。
OK
1hoge = b'\xe5\xbb\x8a\xe4\xb8\x8b' 2print(type(hoge)) 3print(str(hoge,encoding='utf-8',errors='replace')) 4 5<class 'bytes'> 6廊下
NG
1#元データが文字型の場合 2hoge = "b'\xe5\xbb\x8a\xe4\xb8\x8b'" 3???? 4上記のOKの場合と同じようにすると 5printのところで 6TypeError: decoding str is not supported 7エラーとなります。
どなたかご助言の程よろしくお願いいたします。
NG側でも
廊下
という出力が欲しいということでしょうか?
そもそもそんなことをしなければならない状況の方が間違っているんじゃ、という気しかしなくて、なんでそんなことをする羽目になっているのか? を書いてもらった方がいいかと。
(ただの興味だと言われたら、全く興味が持てない質問でしたので)
早速の返信ありがとうございます。
そうです。NG側でも廊下というような形で出力したいです。
こうなった経緯まではよく分からないのですが、
現在データベースの中に文字列として上記のようなデータがたくさん入っておりますので、
まずはそれを読めるように一括変換しようと試みています。
データベースの **文字列型** のカラムにそう入っていて、str型でそう取得されてしまうということですかね……。
恒久的にそうしておくのではなくて、一括で修正するような書き捨てのスクリプトを組んでいる最中、ということならまぁ理解できます。
(y_waiwaiさんの回答のコメントでも進行していますが)回答に必要そうな情報は、質問を編集して随時追記していく方がいいですよ。
ご助言ありがとうございます。追記しました。
そうなんですよ。**文字列型** の中に何故かバイト型のデータが入っておりまして扱いに苦慮してます。
回答も頂けたのでなんとかなりそうです。ありがとうございました。
回答2件
あなたの回答
tips
プレビュー