Python 3에서 문자열을 바이트로 변환
피할 수 없는 "TypeError: 'str'은 버퍼 인터페이스를 지원하지 않습니다." 오류는 다음과 같은 경우에 자주 발생합니다. 문자열을 바이트로 변환하려고 시도합니다. 이 문제를 해결하기 위해 두 가지 기본 방법이 제안됩니다.
b = bytes(mystring, 'utf-8') b = mystring.encode('utf-8')
어떤 방법이 더 Python적인 것으로 간주됩니까?
바이트 및 Bytearray
바이트에 대한 Python 문서입니다. 문자열만 인코딩하는 것보다 더 광범위한 목적을 제공하는 bytearray로 안내합니다.
bytearray([source[, encoding[, errors]]])
Bytearray는 문자열을 포함하여 다양한 소스에서 정수의 변경 가능한 시퀀스를 초기화합니다.
파이썬 고려 사항
문자열을 인코딩하려면 some_string.encode(인코딩)가 더 파이썬적인 것으로 간주됩니다. encode() 메서드를 사용하면 특정 인코딩을 사용하여 입력 문자열을 바이트로 변환하려는 의도가 명확하게 표현됩니다. bytes() 생성자는 보다 포괄적인 작업에 적합하지만 이 시나리오에서는 덜 명시적입니다.
게다가 unicode_string.encode(encoding)는 바이트를 다시 문자열로 변환하기 위해 byte_string.decode(encoding)의 대칭성을 미러링합니다. , 코드 가독성과 일관성을 향상시킵니다.
내부 구현
CPython의 구현은 본질적으로 내부적으로 encode() 메서드를 호출하는 PyUnicode_AsEncodedString을 사용하여 유니코드 문자열을 바이트로 변환합니다. 따라서 encode()를 직접 호출하면 추가 단계가 절약됩니다.
위 내용은 Python 문자열을 바이트로: `bytes()` 대 `encode()` — 어느 것이 더 Python적인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!