XML 이메일 첨부 파일을 읽었습니다.
bytes_string=part.get_payload(decode=False)
내 변수 이름에서 알 수 있듯이 페이로드는 바이트 문자열로 제공됩니다.
이 문자열을 내가 조작 할 수있는 사용 가능한 문자열로 바꾸기 위해 권장되는 Python 3 접근 방식을 사용하려고합니다.
예제는 다음을 보여줍니다.
str(b'abc','utf-8')
b
내 변수에 (bytes) 키워드 인수를 적용 bytes_string
하고 권장 방법을 사용하려면 어떻게해야합니까?
내가 시도한 방식이 작동하지 않습니다.
str(bbytes_string, 'utf-8')
답변
마지막 줄에서 거의 옳았습니다. 원하는
str(bytes_string, 'utf-8')
유형 때문에 bytes_string
IS bytes
의 종류와 동일 b'abc'
.
답변
인스턴스를 호출 decode()
하여 bytes
인코딩하는 텍스트를 가져옵니다.
str = bytes.decode()
답변
업데이트 :
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에 있습니다.
답변
배열에서 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'
(UnicodeDecodeError
예외 발생),'replace'
(사용U+FFFD
,REPLACEMENT CHARACTER
) 또는'ignore'
(유니 코드 결과에서 문자를 제외)입니다.