Trong bài đăng này, chúng tôi sẽ kiểm tra cách chuyển đổi chuỗi Python thành đối tượng. Các đối tượng byte là các chuỗi bất biến của các byte đơn trong phạm vi từ o đến 255 [đã bao gồm]
Giới thiệu
Trong bài đăng này, chúng tôi sẽ kiểm tra cách chuyển đổi chuỗi Python thành đối tượng. Các đối tượng byte là các chuỗi bất biến của các byte đơn [1] trong phạm vi từ o đến 255 [đã bao gồm] [2]
Một trong những cách để thực hiện chuyển đổi này là sử dụng hàm tạo của lớp byte, chuyển chuỗi làm đầu vào. Ngoài ra, chúng ta cần chỉ định mã hóa văn bản [ở định dạng chuỗi] làm đối số thứ hai của hàm tạo [3]
Ngoài ra, chúng ta có thể lấy phiên bản được mã hóa của chuỗi dưới dạng đối tượng byte bằng cách gọi phương thức [4]. Phương thức này cũng nhận đầu vào là mã hóa văn bản dưới dạng chuỗi, mặc dù đối lập với hàm tạo đã đề cập trước đó, tham số này là tùy chọn và mặc định là UTF-8 [4]. Bạn có thể đọc thêm về mã hóa tiêu chuẩn Python
Hướng dẫn này đã được thử nghiệm trên Python phiên bản 3. 6
Mật mã
Chúng tôi sẽ bắt đầu bằng cách khai báo một chuỗi mà chúng tôi sẽ sử dụng để chuyển đổi thành byte bằng hai quy trình được đề cập trong phần giới thiệu
string = "Hello world"
Sau đó, sử dụng cách tiếp cận đầu tiên, chúng ta sẽ tạo một đối tượng bytes từ chuỗi trước đó. Để làm như vậy, chúng ta chuyển chuỗi làm đầu vào đầu tiên của hàm tạo của lớp byte. Thứ hai, chúng ta cần chỉ định mã hóa, sẽ là utf-8
Chúng tôi sẽ lưu trữ kết quả trong một biến và sau đó in loại của nó, vì vậy chúng tôi có thể xác nhận rằng đó thực sự là một đối tượng byte. Để in loại biến, chúng ta chỉ cần sử dụng hàm của Python
Chúng tôi cũng sẽ in đối tượng byte của mình, được tạo từ chuỗi
bytes1 = bytes[string, 'utf-8'] print[type[bytes1]] print[bytes1]
Kết quả được hiển thị dưới đây trong hình 1. Như có thể thấy, chúng ta có được một đối tượng byte lớp, như mong đợi. Lưu ý rằng mặc dù việc in đối tượng hiển thị một biểu diễn văn bản thân thiện với người dùng, nhưng dữ liệu chứa trong đó thực sự là các byte, như chúng ta sẽ thấy bên dưới
Hình 1 – Chuỗi thành byte, sử dụng hàm tạo đối tượng byte
Tiếp tục, bây giờ chúng ta sẽ sử dụng quy trình chuyển đổi thứ hai được đề cập, đó là gọi phương thức mã hóa trên chuỗi. Như đã nêu trong phần giới thiệu, vì phương thức này có UTF-8 làm mã hóa mặc định khi không có đối số nào được đưa ra, nên chúng tôi sẽ không chuyển bất kỳ đầu vào nào cho nó
Chúng tôi sẽ in lại đối tượng được trả về bởi phương thức này, để xác nhận rằng đây cũng là đối tượng byte
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]
Kết quả cho phần mã này có thể được nhìn thấy bên dưới tại hình 2
Hình 2 – Chuỗi thành byte, sử dụng phương thức mã hóa chuỗi
Để kiểm tra giá trị thực của từng byte của cả hai đối tượng byte, chúng ta có thể lặp lại chúng bằng vòng lặp for in và in từng phần tử
Lưu ý rằng trong Python 3 là một hàm có đối số được gọi là end, mặc định là “\n”, được thêm vào cuối đầu vào để in [5]. Do đó, nếu chúng ta chỉ định đối số này là khoảng trắng [““], tất cả các byte của mỗi đối tượng sẽ được in với khoảng cách giữa chúng, thay vì mỗi byte được in trong một dòng mới
for b1 in bytes1: print[b1, end=' '] print[] for b2 in bytes2: print[b2, end=' ']
Như thể hiện trong hình 3, cả hai đối tượng đều có cùng một chuỗi byte
Hình 3 – Chuỗi byte từ cả hai đối tượng
Mã nguồn cuối cùng có thể được nhìn thấy dưới đây
string = "Hello world" bytes1 = bytes[string, 'utf-8'] print[type[bytes1]] print[bytes1] bytes2 = string.encode[] print[type[bytes2]] print[bytes2] for b1 in bytes1: print[b1, end=' '] print[] for b2 in bytes2: print[b2, end=' ']
Lưu ý cuối cùng, nếu chúng ta cố gắng gán giá trị cho một byte của một trong các đối tượng byte [bằng cách sử dụng toán tử []], thì chúng ta sẽ nhận được ngoại lệ như trong hình 4, do thực tế là các đối tượng byte
Chuyển đổi giữa các chuyển đổi như thường lệ khá phổ biến, nhưng chuyển đổi giữa một chuỗi thành byte ngày nay phổ biến hơn do thực tế là để xử lý tệp hoặc Machine Learning [ Pickle File ], chúng tôi yêu cầu chuyển đổi chuỗi thành byte một cách rộng rãi. Hãy thảo luận về những cách nhất định mà điều này có thể được thực hiện
Phương pháp số 1. Sử dụng
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]1
Chuỗi có thể được chuyển đổi thành byte bằng hàm byte chung. Hàm này trỏ nội bộ đến Thư viện CPython gọi ngầm hàm mã hóa để chuyển đổi chuỗi thành mã hóa được chỉ định
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]2
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]3
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]4
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]5
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]6
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]7
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]8
The original string : GFG is best The byte converted string is : b'GFG is best', type :0
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]5
The original string : GFG is best The byte converted string is : b'GFG is best', type :2
The original string : GFG is best The byte converted string is : b'GFG is best', type :3______54
The original string : GFG is best The byte converted string is : b'GFG is best', type :5
The original string : GFG is best The byte converted string is : b'GFG is best', type :6
The original string : GFG is best The byte converted string is : b'GFG is best', type :7
The original string : GFG is best The byte converted string is : b'GFG is best', type :8
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]5
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]4
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]3
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]12
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]8
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]14
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]15
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]16
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]5
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]18
The original string : GFG is best The byte converted string is : b'GFG is best', type :3______54
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]21
The original string : GFG is best The byte converted string is : b'GFG is best', type :6
The original string : GFG is best The byte converted string is : b'GFG is best', type :7
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]24
The original string : GFG is best The byte converted string is : b'GFG is best', type :6
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]26
The original string : GFG is best The byte converted string is : b'GFG is best', type :6
The original string : GFG is best The byte converted string is : b'GFG is best', type :7
The original string : GFG is best The byte converted string is : b'GFG is best', type :4
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]30
bytes2 = string.encode[] print[type[bytes2]] print[bytes2]31