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

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

DDD
リリース: 2024-12-26 02:49:11
オリジナル
624 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート