Python 3 でバイトを文字列に変換する
問題:
外部プログラムの標準出力をバイトオブジェクトに変換し、それを文字列として表示する必要があります。例:
import subprocess p = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE) stdout, _ = p.communicate()
これにより、次のようなバイト オブジェクトが生成されます。
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n'
目標は、このバイト オブジェクトを標準の Python 文字列に変換することです。
解決策:
バイト オブジェクトの stdout を文字列に変換するにはPython 3 では、decode() メソッドを使用します。このメソッドは、バイト オブジェクトのエンコーディングを引数として受け取ります。その方法は次のとおりです:
decoded_stdout = stdout.decode("encoding")
エンコーディングの選択:
エンコーディング パラメーターは、バイトのデコードに使用される文字セットを指定します。この例では、UTF-8 がデフォルトのエンコーディングとして想定されています。ただし、データの実際のエンコーディングを使用することが重要です。
エンコーディングがわからない場合は、「utf-8」を使用してみてください。あるいは、chardet のようなライブラリを使用して、エンコーディングを自動的に検出することもできます。
例:
想定されるエンコーディングとして UTF-8 を使用する:
decoded_stdout = stdout.decode("utf-8")
デコードされた文字列を出力できるようになりました:
print(decoded_stdout) # Output: # -rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1
以上がPython 3 でバイト オブジェクトを文字列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。