Przeczytałem w załączniku e-mail XML z
bytes_string=part.get_payload(decode=False)
Ładunek pojawia się jako ciąg bajtów, jak sugeruje nazwa mojej zmiennej.
Próbuję użyć zalecanego podejścia Python 3, aby przekształcić ten ciąg w użyteczny ciąg, którym mogę manipulować.
Przykład pokazuje:
str(b'abc','utf-8')
Jak mogę zastosować b
argument słowa kluczowego (bajty) do mojej zmiennej bytes_string
i zastosować zalecane podejście?
Sposób, w jaki próbowałem, nie działa:
str(bbytes_string, 'utf-8')
string
python-3.x
type-conversion
bytestring
DjangoTango
źródło
źródło
str(bytes_string, 'utf-8', 'ignore')
Błędy można zignorować, przekazując trzeci parametr.bytes_string
, dlaczego miałbyś chcieć ignorować błędy?UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbf in position 0: invalid start byte
dla następującego ciągu bajtówb'\xbf\x8cd\xba\x7f\xe0\xf0\xb8t\xfe.TaFJ\xad\x100\x07p\xa0\x1f90\xb7P\x8eP\x90\x06)0'
@TobySpeightZadzwoń
decode()
nabytes
przykład, aby uzyskać tekst, który koduje.źródło
AKTUALIZACJA:
Ponieważ Twój kod może zawierać nierozpoznawalne znaki do
'utf-8'
zakodowania, lepiej jest użyć po prostu str bez żadnych dodatkowych parametrów:jeśli dodasz
'utf-8'
parametr do tych konkretnych bajtów, powinieneś otrzymać błąd.Jak mówi standard PYTHON 3,
text
byłby teraz w utf-8 bez obaw.źródło
b
pierwsze z nich, to zaktualizowałem odpowiedźAby rozwiązać ten komentarz w poście @ uname01 i OP, zignoruj błędy:
Kod
Detale
Z dokumentacji , oto więcej przykładów używających tego samego
errors
parametru:źródło