Cách chuyển đổi byte thành chuỗi Python

Chuyển đổi byte thành chuỗi trong lập trình Python rất dễ dàng. Bạn phải sử dụng một trong hai byte. giải mã hoặc mảng phụ. tùy chọn giải mã. Đây là một mẫu mã để sử dụng tùy chọn giải mã để chuyển đổi byte hoặc mảng byte thành chuỗi

Vật mẫu

## Converting bytes to string
bytValue = b'hello there'
print[bytValue]

strResult = bytValue.decode[]
print[strResult]

## Converting bytearray to string
bytArray = bytearray['hello, how are you', 'utf-8']
print[bytArray]

strResult = bytArray.decode[]
print[strResult]

Thẩm quyền giải quyết

  • Tìm hiểu thêm về giải mã byte tại

  • Nhấp để chia sẻ trên LinkedIn [Mở trong cửa sổ mới]
  • Bấm để chia sẻ trên Facebook [Opens in new window]
  • Nhấp để chia sẻ trên Twitter [Mở trong cửa sổ mới]
  • Nhấp để chia sẻ trên Reddit [Mở trong cửa sổ mới]
  • Nhấp để chia sẻ trên WhatsApp [Mở trong cửa sổ mới]
  • Nhấp để chia sẻ trên Pocket [Mở trong cửa sổ mới]
  • Nhấp để gửi email liên kết cho bạn bè [Mở trong cửa sổ mới]

Bạn cũng có thể thích

Chúng ta có thể chuyển đổi byte thành Chuỗi bằng cách sử dụng phương thức đối tượng giải mã lớp byte [], vì vậy bạn cần giải mã đối tượng byte để tạo chuỗi. Trong Python 3, mã hóa mặc định là "utf-8", vì vậy bạn có thể sử dụng trực tiếp

đầu ra

tương đương với

đầu ra

Trong Python 2, mã hóa mặc định thành mã hóa chuỗi mặc định. Vì vậy, bạn nên sử dụng

đầu ra

Chúng ta có thể chuyển đổi chuỗi thành byte bằng cách sử dụng phương thức đối tượng encode[], vì vậy bạn cần mã hóa đối tượng chuỗi để tạo ra một byte

đầu ra

Ngoài ra, phương thức bytes[] của Python trả về một đối tượng bytes có kích thước và giá trị khởi tạo đã cho

đầu ra

Cả hai phương pháp trên để chuyển đổi một chuỗi thành byte đều hoàn toàn ổn. Phương thức mã hóa chuỗi [] và giải mã [] cung cấp tính đối xứng trong khi hàm tạo byte [] là cách tiếp cận hướng đối tượng và dễ đọc hơn. Bạn có thể chọn bất kỳ trong số họ dựa trên sở thích của bạn

Python phân biệt rõ ràng giữa byte và chuỗi. Các đối tượng byte chứa dữ liệu thô - một chuỗi octet - trong khi các chuỗi là các chuỗi Unicode. Chuyển đổi giữa hai loại này là rõ ràng. bạn mã hóa một chuỗi để nhận byte, chỉ định mã hóa [mặc định là UTF-8]; . Khách hàng của các chức năng này nên biết rằng các chuyển đổi như vậy có thể không thành công và nên xem xét cách xử lý các lỗi đó.

Có khả năng bạn đang tìm cách chuyển đổi byte thành chuỗi vì bạn không biết chúng là gì. Trước khi bắt đầu chuyển đổi, trước tiên chúng ta hãy xem nhanh byte là gì

Tại sao lại là byte?

Máy tính không hiểu khái niệm “văn bản” hoặc “số” như là. Điều này là do máy tính hoạt động trên các bit, nghĩa là 0 và 1

Lưu trữ dữ liệu vào máy tính xảy ra bằng cách sử dụng các nhóm bit, còn được gọi là byte. Thông thường, có 8 bit trong một byte. Nhưng điều này có thể khác nhau tùy thuộc vào hệ thống bạn đang sử dụng

Chuỗi byte trong Python

Trong Python, chuỗi byte là một chuỗi byte mà máy tính hiểu được nhưng con người thì không

Chuỗi là một dãy các ký tự và là thứ mà con người chúng ta có thể hiểu được nhưng không thể lưu trữ trực tiếp trong máy tính

Đây là lý do tại sao bất kỳ chuỗi nào cũng cần được chuyển đổi thành chuỗi byte trước khi máy tính có thể sử dụng nó

Trong Python, đối tượng bytes là biểu diễn byte của chuỗi. Một đối tượng byte có tiền tố là chữ 'b'

Ví dụ, hãy xem hai biến này

name1 = 'Alice'
name2 = b'Alice'

Đây

  • name1 là một đối tượng str
  • name2 là một đối tượng byte

Bạn có thể xác minh điều này bằng cách in ra các loại dữ liệu của các biến này

name1 = 'Alice'
name2 = b'Alice'

print[type[name1]]
print[type[name2]] 

đầu ra

Như tôi đã đề cập trước đó, chuỗi byte là thứ khó hiểu. Trong đoạn mã trên, điều này không rõ ràng vì bạn chỉ có thể đọc b'Alice' rất rõ ràng

Chuỗi byte so với Chuỗi trong Python

Để thấy sự khác biệt chính giữa chuỗi byte và chuỗi, hãy in các từ theo từng ký tự

Đầu tiên, hãy thực hiện biến name1

name1 = 'Alice'
name2 = b'Alice'

for c in name1:
    print[c]

đầu ra

A
l
i
c
e

Bây giờ, hãy in từng byte trong đối tượng name2 bytes

name1 = 'Alice'
name2 = b'Alice'

for c in name2:
    print[c]

đầu ra

65
108
105
99
101

Ở đây bạn có thể thấy không có cách nào để bạn biết ý nghĩa của những con số đó. Những con số đó là giá trị byte của các ký tự trong một chuỗi. Một cái gì đó mà một máy tính có thể hiểu được

Để làm rõ thêm một điều nữa, hãy xem điều gì sẽ xảy ra nếu chúng ta in đối tượng bytes name2 nguyên trạng

________số 8

đầu ra

Alice
0

Là sự ngạc nhiên của bạn, nó rõ ràng nói "Alice". Điều này không quá khó để đọc, phải không?

Lý do tại sao chuỗi byte in ra dưới dạng chuỗi có thể đọc được là bởi vì những gì bạn thấy thực sự là biểu diễn chuỗi của đối tượng byte

Python làm điều này để thuận tiện cho nhà phát triển

Nếu không có biểu diễn chuỗi đặc biệt cho đối tượng byte, việc in byte sẽ vô nghĩa

Dù sao, bây giờ bạn đã hiểu đối tượng bytes trong Python là gì và nó khác với đối tượng str như thế nào

Bây giờ, hãy xem cách chuyển đổi giữa byte và chuỗi

1. Hàm giải mã []

Với đối tượng bytes, bạn có thể sử dụng phương thức decode[] tích hợp để chuyển đổi byte thành chuỗi

Bạn cũng có thể chuyển loại mã hóa cho hàm này làm đối số

Ví dụ: hãy sử dụng mã hóa UTF-8 để chuyển đổi byte thành chuỗi

Alice
1

đầu ra

Alice
2

2. Hàm str[]

Một cách tiếp cận khác để chuyển đổi byte thành chuỗi là sử dụng hàm str[] tích hợp sẵn

Phương thức này thực hiện chính xác như phương thức decode[] trong ví dụ trước

Ví dụ

Alice
3

đầu ra

Alice
2

Có lẽ nhược điểm duy nhất của phương pháp này là khả năng đọc mã

Nếu bạn so sánh hai dòng này

Alice
5

Bạn có thể thấy phần sau rõ ràng hơn về việc giải mã các byte thành một chuỗi

3. Chức năng giải mã codec[]

Python cũng có một mô-đun codec tích hợp để giải mã và mã hóa văn bản

Mô-đun này cũng có chức năng giải mã [] riêng. Bạn có thể sử dụng chức năng này để chuyển đổi byte thành chuỗi [và ngược lại]

Ví dụ

Alice
6

đầu ra

Alice
2

4. Chức năng giải mã gấu trúc []

Nếu bạn đang làm việc với gấu trúc và bạn có khung dữ liệu bao gồm các byte, bạn có thể dễ dàng chuyển đổi chúng thành chuỗi bằng cách gọi phương thức str. hàm giải mã [] trên một cột

Ví dụ

Alice
8

đầu ra

Alice
9

5. bản đồ [] Chức năng. Chuyển đổi danh sách byte thành chuỗi

Trong Python, một chuỗi là một nhóm ký tự

Mỗi ký tự Python được liên kết với một giá trị Unicode, là một số nguyên

Như vậy, bạn có thể chuyển đổi một số nguyên thành một ký tự trong Python

Để làm điều này, bạn có thể gọi hàm chr[] tích hợp trên một số nguyên

Đưa ra một danh sách các số nguyên, bạn có thể sử dụng hàm map[] để ánh xạ từng số nguyên thành một ký tự

Đây là giao diện của nó trong mã

name1 = 'Alice'
name2 = b'Alice'
0

đầu ra

Alice

Đoạn mã này

  1. Chuyển đổi các số nguyên thành các ký tự tương ứng
  2. Trả về một danh sách các ký tự
  3. Hợp nhất danh sách các ký tự thành một chuỗi

Để tìm hiểu thêm về hàm map[] trong Python, vui lòng đọc bài viết này

Hãy cẩn thận với việc mã hóa

Có hàng tá mã hóa byte thành chuỗi ngoài kia

Trong hướng dẫn này, chúng tôi chỉ sử dụng mã hóa UTF-8, đây là loại mã hóa phổ biến nhất

UTF-8 cũng là kiểu mã hóa mặc định trong Python. Tuy nhiên, mã hóa UTF-8 không phải lúc nào cũng đúng

Ví dụ

name1 = 'Alice'
name2 = b'Alice'
2

đầu ra

name1 = 'Alice'
name2 = b'Alice'
3

Lỗi này có nghĩa là không có ký tự nào trong bảng mã UTF-8 tương ứng với các byte trong chuỗi

Nói cách khác, bạn nên sử dụng một mã hóa khác

Bạn có thể sử dụng một mô-đun như chardet để phát hiện mã hóa ký tự. [Lưu ý rằng mô-đun này không được duy trì, nhưng hầu hết thông tin bạn tìm hiểu về mô-đun này vẫn có thể áp dụng được. ]

Tuy nhiên, không có phương pháp nào là hoàn hảo 100%. Mô-đun này cung cấp cho bạn dự đoán tốt nhất về mã hóa và xác suất liên quan đến nó

Dù sao, giả sử chuỗi byte trên có thể được giải mã bằng cách sử dụng mã hóa latin1 cũng như mã hóa iso_8559_5

Bây giờ hãy thực hiện chuyển đổi

name1 = 'Alice'
name2 = b'Alice'
4

đầu ra

name1 = 'Alice'
name2 = b'Alice'
5

Lần này không có lỗi. Thay vào đó, nó hoạt động với cả hai mã hóa và tạo ra một kết quả khác

Vì vậy, hãy cẩn thận với các mã hóa

Nếu bạn gặp lỗi khi thực hiện chuyển đổi, điều đầu tiên bạn cần làm là tìm ra mã hóa được sử dụng. Sau đó, bạn nên sử dụng mã hóa cụ thể đó để mã hóa/giải mã các giá trị của mình để hiểu đúng

Phần kết luận

Hôm nay bạn đã học cách chuyển đổi byte thành chuỗi trong Python

Tóm lại, có rất nhiều cách để chuyển đổi byte thành chuỗi trong Python

  • Để chuyển đổi một chuỗi byte thành một chuỗi, hãy sử dụng các byte. phương pháp giải mã []
  • Nếu bạn có một danh sách các byte, hãy gọi hàm chr[] trên mỗi byte bằng cách sử dụng hàm map[] [hoặc một vòng lặp for]
  • Nếu bạn có một khung dữ liệu gấu trúc có byte, hãy gọi. str. phương thức giải mã [] trên cột có byte

Theo mặc định, mã hóa ký tự Python thường là UTF-8

Tuy nhiên, điều này không phải lúc nào cũng áp dụng được. Cố gắng mã hóa một byte không phải UTF-8 bằng UTF-8 sẽ gây ra lỗi. Trong tình huống này, bạn nên xác định đúng bảng mã ký tự trước khi mã hóa/giải mã. Bạn có thể sử dụng một mô-đun như chardet để làm điều này

Làm cách nào để chuyển đổi byte thành chuỗi Python?

Các cách khác nhau để chuyển đổi Byte thành chuỗi trong Python. .
Sử dụng phương thức giải mã[]
Sử dụng hàm str[]
Sử dụng codec. phương pháp giải mã []
Sử dụng map[] mà không sử dụng tiền tố b
Sử dụng gấu trúc để chuyển đổi byte thành chuỗi

Bạn sẽ chuyển đổi byte thành chuỗi như thế nào?

Một phương pháp là tạo một biến chuỗi rồi nối giá trị byte vào biến chuỗi với sự trợ giúp của toán tử + . Điều này sẽ trực tiếp chuyển đổi giá trị byte thành một chuỗi và thêm nó vào biến chuỗi.

Làm cách nào để chuyển đổi byte thành chuỗi trong gấu trúc?

Nếu bạn đang sử dụng pandas và có khung dữ liệu byte, bạn có thể nhanh chóng chuyển đổi nó thành chuỗi bằng cách gọi str. phương thức giải mã[] trên một cột .

Làm cách nào để chuyển đổi một mảng byte thành chuỗi Python?

Sử dụng hàm decode[] để chuyển đổi Bytearray thành String trong Python. Một cách khác để chuyển đổi một mảng phụ thành chuỗi là sử dụng phương thức decode[]. Phương thức giải mã [], khi được gọi trên một đối tượng bytearray, sẽ lấy định dạng mã hóa làm đầu vào và trả về chuỗi đầu ra.

Chủ Đề