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을 문자열로 변환하려면 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!