147
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi đã đọc trong một tệp đính kèm email XML với
bytes_string=part.get_payload[decode=False]
Tải trọng đi kèm dưới dạng chuỗi byte, như tên biến của tôi cho thấy.
Tôi đang cố gắng sử dụng phương pháp Python 3 được đề xuất để biến chuỗi này thành một chuỗi có thể sử dụng mà tôi có thể thao tác.
Ví dụ cho thấy:
str[b'abc','utf-8']
Làm cách nào tôi có thể áp dụng đối số từ khóa b
[byte] cho biến
str[b'abc','utf-8']
0 của tôi và sử dụng phương pháp được đề xuất?Cách tôi thử không hoạt động:
str[bbytes_string, 'utf-8']
Sjakobi
3,4661 Huy hiệu vàng25 Huy hiệu bạc42 Huy hiệu đồng1 gold badge25 silver badges42 bronze badges
Đã hỏi ngày 25 tháng 6 năm 2015 lúc 18:29Jun 25, 2015 at 18:29
1
Bạn đã có nó gần đúng trong dòng cuối cùng. Bạn muốn
str[bytes_string, 'utf-8']
Bởi vì loại ____10 là
str[b'abc','utf-8']
2, giống như loại str[b'abc','utf-8']
3.
ndmeiri
4.91812 Huy hiệu vàng34 Huy hiệu bạc42 Huy hiệu Đồng12 gold badges34 silver badges42 bronze badges
Đã trả lời ngày 25 tháng 6 năm 2015 lúc 21:09Jun 25, 2015 at 21:09
Toby Speighttoby SpeightToby Speight
25.8K47 Huy hiệu vàng62 Huy hiệu bạc95 Huy hiệu Đồng47 gold badges62 silver badges95 bronze badges
4
Gọi
str[b'abc','utf-8']
4 trên một ví dụ str[b'abc','utf-8']
2 để lấy văn bản mà nó mã hóa.str = bytes.decode[]
Đã trả lời ngày 25 tháng 6 năm 2015 lúc 18:36Jun 25, 2015 at 18:36
uname01uname01uname01
1.1618 Huy hiệu bạc9 Huy hiệu đồng8 silver badges9 bronze badges
4
Làm thế nào để lọc [Bỏ qua] Charachers không phải UTF8 từ Array?
Để giải quyết nhận xét này trong bài đăng của @uname01 và OP, hãy bỏ qua các lỗi:
Mã số
>>> b'\x80abc'.decode["utf-8", errors="ignore"]
'abc'
Thông tin chi tiết
Từ các tài liệu, đây là nhiều ví dụ sử dụng cùng một tham số
str[b'abc','utf-8']
6:>>> 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
Đối số lỗi chỉ định phản hồi khi chuỗi đầu vào có thể được chuyển đổi theo các quy tắc mã hóa. Các giá trị pháp lý cho đối số này là
7 [tăng ngoại lệstr[b'abc','utf-8']
8],str[b'abc','utf-8']
9 [sử dụngstr[b'abc','utf-8']
0,str[bbytes_string, 'utf-8']
1] hoặcstr[bbytes_string, 'utf-8']
2 [chỉ cần để ký tự ra khỏi kết quả Unicode].str[bbytes_string, 'utf-8']
Đã trả lời ngày 23 tháng 3 năm 2018 lúc 19:47Mar 23, 2018 at 19:47
Pylangpylangpylang
36.8k11 Huy hiệu vàng121 Huy hiệu bạc112 Huy hiệu đồng11 gold badges121 silver badges112 bronze badges
UPDATED:
Không có bất kỳ
b
và trích dẫn lúc đầu và kết thúcLàm thế nào để chuyển đổi
2 như đã thấy thành các chuỗi, ngay cả trong các tình huống kỳ lạ.str[b'abc','utf-8']
Vì mã của bạn có thể có các ký tự không thể nhận ra để mã hóa
str[bbytes_string, 'utf-8']
5, tốt hơn là sử dụng chỉ STR mà không cần bất kỳ tham số bổ sung nào:unrecognizable characters to str[bbytes_string, 'utf-8']
5 encoding, it's better to use just str without any additional
parameters:some_bad_bytes = b'\x02-\xdfI#]'
text = str[ some_bad_bytes ][2:-1]
print[text]
Output: \x02-\xdfI
Nếu bạn thêm tham số
str[bbytes_string, 'utf-8']
5, vào các byte cụ thể này, bạn sẽ nhận được lỗi.Như Python 3 Standard nói,
str[bbytes_string, 'utf-8']
7 sẽ ở UTF-8 bây giờ mà không quan tâm.
Đã trả lời ngày 14 tháng 10 năm 2017 lúc 20:22Oct 14, 2017 at 20:22
SeyfiseyfiSeyfi
1.6901 Huy hiệu vàng18 Huy hiệu bạc33 Huy hiệu đồng1 gold badge18 silver badges33 bronze badges
4