programing

파이썬 3 바이트 문자열 변수를 일반 문자열로 변환하려면 어떻게 해야 합니까?

lastcode 2023. 5. 17. 23:13
반응형

파이썬 3 바이트 문자열 변수를 일반 문자열로 변환하려면 어떻게 해야 합니까?

XML 전자 메일 첨부 파일에서 읽은 적이 있습니다.

bytes_string=part.get_payload(decode=False)

페이로드는 제 변수 이름에서 알 수 있듯이 바이트 문자열로 제공됩니다.

저는 이 문자열을 조작할 수 있는 사용 가능한 문자열로 만들기 위해 추천하는 Python 3 접근법을 사용하려고 합니다.

예는 다음과 같습니다.

str(b'abc','utf-8')

어떻게 적용할 수 있습니까?b(바이트) 내 변수에 대한 키워드 인수bytes_string권장되는 접근 방식을 사용하시겠습니까?

제가 시도한 방법은 효과가 없습니다.

str(bbytes_string, 'utf-8')

당신은 마지막 줄에서 거의 정확하게 그것을 가지고 있었습니다.너는 원한다

str(bytes_string, 'utf-8')

의 종류 때문에bytes_string이라bytes의 종류와 같은b'abc'.

불러decode()에서bytes인스턴스(instance)를 생성하여 인코딩할 텍스트를 가져옵니다.

str = bytes.decode()

어레이에서 UTF8이 아닌 문자를 필터링(스킵)하는 방법은 무엇입니까?

@uname01의 게시물과 OP에서 이 의견을 처리하려면 다음 오류를 무시하십시오.

코드

>>> b'\x80abc'.decode("utf-8", errors="ignore")
'abc'

세부 사항

문서에서 동일한 것을 사용하는 더 많은 예가 있습니다.errors매개변수:

>>> b'\x80abc'.decode("utf-8", "replace")
'\ufffdabc'
>>> b'\x80abc'.decode("utf-8", "backslashreplace")
'\\x80abc'
>>> b'\x80abc'.decode("utf-8", "strict")  
Traceback (most recent call last):
    ...
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0:
  invalid start byte

errors 인수는 인코딩 규칙에 따라 입력 문자열을 변환할 수 없는 경우의 응답을 지정합니다.이 인수의 법적 가치는 다음과 같습니다.'strict'(a를 포함)UnicodeDecodeError예외),'replace'(사용)U+FFFD,REPLACEMENT CHARACTER), 또는'ignore'(유니코드 결과에서 문자를 제외하기만 하면 됩니다.

업데이트됨:

아무것도 가지지 않는 것b첫 번째와 끝에 있는 인용문

변환 방법bytes현악기에서 볼 수 있듯이, 심지어 이상한 상황에서도.

코드에 인식할 수 없는 문자가 있을 수 있습니다.'utf-8'인코딩, 추가 매개 변수 없이 str만 사용하는 것이 좋습니다.

some_bad_bytes = b'\x02-\xdfI#)'
text = str( some_bad_bytes )[2:-1]

print(text)
Output: \x02-\xdfI

덧붙이면'utf-8'매개 변수, 이 특정 바이트에 대해 오류를 수신해야 합니다.

PYTHON 3 표준에서 언급하고 있듯이,text걱정하지 않아도 지금은 utf-8에 있을 겁니다.

언급URL : https://stackoverflow.com/questions/31058055/how-do-i-convert-a-python-3-byte-string-variable-into-a-regular-string

반응형