ホームページ >バックエンド開発 >Python チュートリアル >Python 3 でバイト オブジェクトを文字列に変換するにはどうすればよいですか?

Python 3 でバイト オブジェクトを文字列に変換するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-26 02:49:11627ブラウズ

How Do I Convert a Bytes Object to a String in Python 3?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。