Python tuần tự hóa danh sách thành chuỗi

Tôi đang gặp sự cố khá dễ xảy ra với bộ nối tiếp của mình.
Chế độ xem của tôi.

@api_view[['GET']]
def get_recipes_list[request]:
    recipes = Recipe.objects.all[]

    serializer = RecipeListSerializer[recipes, context={'request': request}, many=True]
    return Response[serializer.data]

nối tiếp của tôi

class RecipeListSerializer[serializers.Serializer]:
    name = serializers.CharField[]

Đầu ra tôi nhận được

[
    {
        "name": "Gelato1"
    },
    {
        "name": "Gelato2"
    },
]

Những gì tôi mong muốn là

[
    'name': [
       'Gelato1',
       'Gelato2',
    ] 
]

Tôi đã thử.

fast_car1 = Car[5, 12]
4
Vì vậy, Bộ truy vấn có một danh sách tên, nhưng tôi đang gặp AttributeError. Tôi sẽ biết ơn vì bất kỳ lời khuyên nào.

Trong bài viết này, chúng tôi giới thiệu cho bạn về tuần tự hóa đối tượng trong Python và giải thích tại sao nó lại quan trọng. Tuần tự hóa về cơ bản là một cách lưu trữ dữ liệu hoặc đối tượng và là một kỹ thuật hữu ích để lưu các đối tượng phức tạp. Đó là quá trình chuyển đổi một đối tượng thành luồng byte có thể được lưu trữ, chẳng hạn như trong bộ nhớ hoặc tệp. Sau đó, tệp này có thể được xây dựng lại hoặc giải tuần tự hóa để truy xuất đối tượng ban đầu, sau đó được sử dụng lại trong các chương trình khác nhau hoặc thậm chí các môi trường khác nhau

Dưới đây, chúng tôi chỉ cho bạn một số ví dụ về cách sử dụng một số công cụ phổ biến nhất để tuần tự hóa trong Python. Nếu bạn chưa quen với Python và muốn xây dựng kỹ năng xử lý dữ liệu của mình, hãy xem bản nhạc này. Nó dạy cho bạn tất cả những gì bạn cần biết về xử lý các định dạng tệp khác nhau bằng Python

Lớp cơ bản

Hãy nhớ rằng Python là một ngôn ngữ hướng đối tượng; . Điều này có nghĩa là bạn có thể tuần tự hóa dữ liệu được lưu trữ trong danh sách, từ điển hoặc thậm chí các thể hiện của lớp

Hãy tham gia và tạo một lớp học lái xe ô tô. Trọng tâm của bài viết này không phải là về các lớp học, vì vậy nếu bạn muốn biết thêm chi tiết về cách hoạt động của các lớp học, hãy xem bài viết này. Chúng tôi cũng có một số tài liệu dựa trên đó và chỉ cho bạn cách viết một mô-đun tùy chỉnh bằng Python

Một đối tượng trong Python có các thuộc tính [như thuộc tính của nó] và các phương thức [những thứ nó có thể làm]. Các thuộc tính quan trọng đối với loại ô tô của chúng tôi là mức nhiên liệu hiện tại và hiệu quả [lượng nhiên liệu tiêu thụ trên mỗi km]. Chúng được định nghĩa trong

fast_car1 = Car[5, 12]
5. Ô tô cũng có thể có một số hành động liên quan đến chúng, chẳng hạn như lái xe một khoảng cách nhất định. Đây là các phương thức lớp, được viết dưới dạng các hàm trong lớp

Lớp sau đây cho phép bạn lái ô tô một quãng đường nhất định với mức nhiên liệu và hiệu quả của nó

class Car:
    def __init__[self, efficiency, fuel_level]:
        self.efficiency = efficiency
        self.fuel_level = fuel_level
    
    def drive[self, distance]:
        max_distance = self.fuel_level * self.efficiency
        
        if distance > max_distance:
            print['Traveled %s km, out of fuel'%[max_distance]]
            self.fuel_level = 0
        else:
            self.fuel_level -= distance / self.efficiency
            print['Arrived safely!']

Chúng ta có thể tạo một đối tượng ô tô với hiệu suất 5 km/L và mức nhiên liệu 12 L như sau

fast_car1 = Car[5, 12]

Hãy lái xe trong 8 km, sau đó kiểm tra mức nhiên liệu

>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4

Càng xa càng tốt. Bây giờ chúng tôi muốn sắp xếp lại đối tượng

fast_car1 = Car[5, 12]
6 để chúng tôi có thể quay lại và sử dụng nó sau mà không cần phải khởi tạo lại nó. Nhập
fast_car1 = Car[5, 12]
0

dưa chua

Mô-đun Python

fast_car1 = Car[5, 12]
0 là một mô-đun dễ sử dụng để tuần tự hóa [chọn] và giải tuần tự hóa [bỏ chọn] các đối tượng trong Python. Một số lượng lớn các đối tượng có thể được chọn, bao gồm Booleans, số nguyên, số float và chuỗi, cũng như các cấu trúc dữ liệu như danh sách, từ điển, bộ, v.v. Các hàm và lớp có thể được tuần tự hóa, và như chúng ta sẽ thấy bên dưới, các thể hiện của lớp cũng vậy.

Mô-đun Python

fast_car1 = Car[5, 12]
0 lưu trữ dữ liệu ở dạng nhị phân, do đó con người không thể đọc được. Nó đi kèm với bốn phương pháp. Hai cái chúng tôi sẽ sử dụng cho trường hợp của chúng tôi là
fast_car1 = Car[5, 12]
3 và
fast_car1 = Car[5, 12]
4, lần lượt lưu và tải các tệp dưa chua. Hai phương pháp khác là
fast_car1 = Car[5, 12]
5 và
fast_car1 = Car[5, 12]
6, sẽ tuần tự hóa các đối tượng mà không lưu chúng vào tệp

Chúng ta sẽ xem xét kỹ hơn hai cái đầu tiên bên dưới. Nhưng trước khi chúng tôi làm, một lời cảnh báo. như đã nêu trong tài liệu chính thức, mô-đun Python

fast_car1 = Car[5, 12]
0 không an toàn trước dữ liệu được xây dựng độc hại có thể thực thi mã nước ngoài. Do đó, không bao giờ giải nén dữ liệu nhận được từ một nguồn không đáng tin cậy

Sau khi tóm tắt về an toàn, chúng ta hãy tiếp tục với một ví dụ về pickling và unpickling trong Python

class RecipeListSerializer[serializers.Serializer]:
    name = serializers.CharField[]
5

Thực thi mã này sẽ tạo tệp

fast_car1 = Car[5, 12]
8 trong thư mục làm việc hiện tại của bạn. Để giải nén tệp này, chỉ cần làm như sau

class RecipeListSerializer[serializers.Serializer]:
    name = serializers.CharField[]
7

Lưu ý các chế độ khác nhau mà chúng tôi sử dụng để tuần tự hóa ['

fast_car1 = Car[5, 12]
9'] và giải tuần tự hóa ['
>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4
0']. Hai đối tượng
fast_car1 = Car[5, 12]
6 và
>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4
2 là hai đối tượng riêng biệt với các vị trí khác nhau trong bộ nhớ; . Nhân tiện, nếu bạn chưa quen với việc sử dụng câu lệnh
>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4
3 để lưu tệp, thì đây là một số tài liệu về cách ghi vào tệp trong Python

Chúng tôi đã đề cập hầu hết mọi thứ trong Python là một đối tượng. Danh sách là một đối tượng, có các thuộc tính và phương thức. Ví dụ:

>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4
4 là một cách dễ dàng để thêm dữ liệu tùy ý vào danh sách và
>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4
5 đảo ngược các phần tử. Còn nhiều nữa bạn nên làm quen với. Bây giờ, hãy thử sắp xếp theo thứ tự một danh sách với
fast_car1 = Car[5, 12]
0 như chúng tôi đã làm ở trên. Hoặc tốt hơn, hãy thử với từ điển. Cấu trúc dữ liệu lồng nhau sẽ hơi cồng kềnh khi lưu vào tệp CSV hoặc tệp văn bản, nhưng đó là cấu trúc hai chiều với mô-đun
fast_car1 = Car[5, 12]
0

Tuần tự hóa JSON trong Python

JSON là viết tắt của JavaScript Object Notation và là một định dạng nhẹ để lưu trữ dữ liệu. Dữ liệu được lưu trữ ở định dạng này có cấu trúc tương tự như từ điển Python, vì vậy nó trông không quá xa lạ. Nếu bạn chưa quen làm việc với các tệp JSON, hãy xem khóa học này. Nó chứa các bài tập tương tác và dạy cho bạn tất cả những gì bạn cần biết

Python có một mô-đun,

>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4
8, rất hữu ích nếu bạn đang tìm cách mã hóa hoặc giải mã dữ liệu ở định dạng này. Lý do để chọn phương pháp này thay vì mô-đun
fast_car1 = Car[5, 12]
0 bao gồm việc nó được tiêu chuẩn hóa và không phụ thuộc vào ngôn ngữ. Nó cũng an toàn hơn nhiều và con người có thể đọc được

Mô-đun

>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4
8 có thể được sử dụng để tuần tự hóa các đối tượng trong Python. Nó thực hiện bốn phương thức cơ bản giống như chúng ta đã thấy ở trên. Kiểm tra tài liệu để biết thêm thông tin và nhiều ví dụ khác

Hãy bắt đầu với một ví dụ đơn giản về tuần tự hóa danh sách với mô-đun

>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4
8. Ở đây, chúng tôi sử dụng phương thức
fast_car1 = Car[5, 12]
5, phương thức này không lưu dữ liệu vào tệp mà tuần tự hóa nó thành một chuỗi

[
    'name': [
       'Gelato1',
       'Gelato2',
    ] 
]
1

Bây giờ, nếu chúng ta thử tương tự để tuần tự hóa đối tượng

fast_car1 = Car[5, 12]
6 mà chúng ta đã khởi tạo ở trên, chúng ta sẽ gặp sự cố

[
    'name': [
       'Gelato1',
       'Gelato2',
    ] 
]
2

Bộ mã hóa JSON được triển khai trong các phương thức

fast_car1 = Car[5, 12]
3 và
fast_car1 = Car[5, 12]
5 chỉ có thể tuần tự hóa một số loại đối tượng cơ bản. Đây là từ điển, danh sách, chuỗi, số nguyên, số float, Booleans và Không. Các đối tượng phức tạp như
fast_car1 = Car[5, 12]
6 cần được tuần tự hóa tùy chỉnh thành định dạng JSON bằng cách xây dựng bộ mã hóa tùy chỉnh trong Python

Viết một bộ mã hóa tùy chỉnh

Con đường phía trước về cơ bản tóm lại là biểu diễn dữ liệu trong từ điển

>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4
8 có thể tuần tự hóa. Bạn tạo một lớp bộ mã hóa tùy chỉnh mở rộng lớp
class RecipeListSerializer[serializers.Serializer]:
    name = serializers.CharField[]
58 trong mô-đun
>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4
8, sau đó sử dụng các phương thức
fast_car1 = Car[5, 12]
3 hoặc
fast_car1 = Car[5, 12]
5 bình thường

Hãy xem xét kỹ hơn một ví dụ. Ở đây, lớp Car giống như trên, và bây giờ có một lớp mới,

class RecipeListSerializer[serializers.Serializer]:
    name = serializers.CharField[]
72

class Car:
    def __init__[self, efficiency, fuel_level]:
        self.efficiency = efficiency
        self.fuel_level = fuel_level
    
    def drive[self, distance]:
        max_distance = self.fuel_level * self.efficiency
        
        if distance > max_distance:
            print['Traveled %s km, out of fuel'%[max_distance]]
            self.fuel_level = 0
        else:
            self.fuel_level -= distance / self.efficiency
            print['Arrived safely!']
1

Lớp tùy chỉnh của chúng tôi sử dụng

class RecipeListSerializer[serializers.Serializer]:
    name = serializers.CharField[]
73, đây là thuộc tính tích hợp lưu trữ các thuộc tính của đối tượng dưới dạng cặp khóa/giá trị. Sau đó, chúng tôi chỉ định lớp tùy chỉnh của mình với đối số từ khóa
class RecipeListSerializer[serializers.Serializer]:
    name = serializers.CharField[]
74 trong phương thức
fast_car1 = Car[5, 12]
5. Đầu ra cho thấy đối tượng
fast_car1 = Car[5, 12]
6 của chúng tôi thực sự đã được tuần tự hóa JSON

Tốt nhất của cả hai thế giới

Cho đến nay, chúng ta đã khám phá hai phương pháp để tuần tự hóa các đối tượng trong Python. đầu tiên với mô-đun

fast_car1 = Car[5, 12]
0 và thứ hai bằng cách tuần tự hóa thành JSON với mô-đun
>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4
8 và lớp bộ mã hóa tùy chỉnh.
fast_car1 = Car[5, 12]
0 rất thân thiện với người dùng nhưng con người không thể đọc được và không an toàn.
>>> fast_car1.drive[8]
>>> fast_car1.fuel_level
10.4
8 thì ngược lại

Công việc khó khăn là kết hợp những gì tốt nhất của hai phương pháp này đã được thực hiện cho chúng tôi và có sẵn trong mô-đun

[
    'name': [
       'Gelato1',
       'Gelato2',
    ] 
]
11 được đặt tên khéo léo. Mô-đun này cung cấp một bộ công cụ để tuần tự hóa các đối tượng Python phức tạp thành JSON và cũng xử lý việc giải tuần tự hóa.
[
    'name': [
       'Gelato1',
       'Gelato2',
    ] 
]
11 xây dựng dựa trên các loại đối tượng cơ bản có thể tuần tự hóa JSON và cho phép các đối tượng phức tạp hơn được tuần tự hóa

Cách dễ nhất để bạn có được mô-đun này là sử dụng lệnh nhanh

[
    'name': [
       'Gelato1',
       'Gelato2',
    ] 
]
13. Mô-đun này đi kèm với cùng một nhãn cảnh báo đi kèm với
fast_car1 = Car[5, 12]
0. Không sử dụng nó để giải tuần tự hóa dữ liệu từ một nguồn không đáng tin cậy

Chức năng của nó tương tự như những gì chúng ta đã thấy trong bài viết này, vì vậy chúng ta sẽ không đi sâu vào chi tiết ở đây. Không cần phải nói, nó đi kèm với phương thức

[
    'name': [
       'Gelato1',
       'Gelato2',
    ] 
]
15 để tuần tự hóa và giải mã [] để giải tuần tự hóa. Nó cũng có khả năng tùy biến cao. Kiểm tra tài liệu nếu bạn muốn biết thêm chi tiết và một số ví dụ nhanh

Tuần tự hóa đối tượng chính trong Python

Chúng tôi hy vọng chúng tôi đã làm sáng tỏ tuần tự hóa đối tượng trong Python là gì. Chúng tôi đã chỉ cho bạn một số công cụ hữu ích để giúp bạn quản lý tốt hơn các chương trình và dữ liệu của mình. Hãy chắc chắn rằng bạn đã nhúng tay vào và chơi xung quanh với các ví dụ được hiển thị ở đây. Sau đó, bạn sẽ nhanh chóng thành thạo một khía cạnh khác của Python

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

Để chuyển đổi danh sách thành chuỗi, hãy sử dụng chức năng Hiểu danh sách Python và hàm join[] . Việc hiểu danh sách sẽ duyệt qua từng phần tử một và phương thức nối [] sẽ nối các phần tử của danh sách thành một chuỗi mới và trả về nó dưới dạng đầu ra.

Làm cách nào để tuần tự hóa một danh sách Python?

Các bước để thực hiện tuần tự hóa trong Python Mở tệp mà bạn muốn lưu đối tượng ở chế độ ghi nhị phân. Gọi phương thức của pickle 's dump[] và truyền đối tượng làm đối số thứ nhất và đối tượng tệp được tạo ở trên làm đối số thứ hai. Lặp lại bước 3 cho đến khi tất cả các đối tượng được lưu vào một tệp.

Bạn có thể xâu chuỗi một danh sách không?

Ví dụ. Chuyển đổi ArrayList thành Chuỗi . toString[]; . Phương thức chuyển đổi toàn bộ danh sách mảng thành một Chuỗi duy nhất. used the toString[] method to convert the arraylist into a string. The method converts the entire arraylist into a single String .

Làm cách nào để tuần tự hóa một chuỗi trong Python?

Để tuần tự hóa một lệnh Python mà không cần phụ thuộc bên ngoài và theo cách mà con người có thể đọc được, chỉ cần chuyển đổi chuỗi thành từ điển bằng cách sử dụng hàm tích hợp sẵn str[] .

Chủ Đề