Tuần tự hóa dữ liệu là quá trình chuyển đổi dữ liệu có cấu trúc sang định dạng cho phép chia sẻ hoặc lưu trữ dữ liệu ở dạng cho phép khôi phục cấu trúc ban đầu của nó. Trong một số trường hợp, mục đích thứ cấp của tuần tự hóa dữ liệu là giảm thiểu kích thước của dữ liệu, sau đó giảm yêu cầu về dung lượng ổ đĩa hoặc băng thông
phẳng so với. Dữ liệu lồng nhau
Trước khi bắt đầu tuần tự hóa dữ liệu, điều quan trọng là xác định hoặc quyết định cách cấu trúc dữ liệu trong quá trình tuần tự hóa dữ liệu - phẳng hoặc lồng nhau. Sự khác biệt trong hai phong cách được thể hiện trong các ví dụ dưới đây
phong cách phẳng
{ "Type" : "A", "field1": "value1", "field2": "value2", "field3": "value3" }
kiểu lồng nhau
{"A" { "field1": "value1", "field2": "value2", "field3": "value3" } }
Để đọc thêm về hai kiểu, vui lòng xem phần thảo luận về danh sách gửi thư Python, danh sách gửi thư IETF và trong stackexchange
Nối tiếp văn bản
Tệp đơn giản [dữ liệu phẳng]
Nếu dữ liệu được tuần tự hóa nằm trong một tệp và chứa dữ liệu phẳng, Python cung cấp hai phương thức để tuần tự hóa dữ liệu
đại diện
Phương thức repr trong Python lấy một tham số đối tượng duy nhất và trả về một biểu diễn có thể in được của đầu vào
# input as flat text a = { "Type" : "A", "field1": "value1", "field2": "value2", "field3": "value3" } # the same input can also be read from a file a = open['/tmp/file.py', 'r'] # returns a printable representation of the input; # the output can be written to a file as well print[repr[a]] # write content to files using repr with open['/tmp/file.py'] as f:f.write[repr[a]]
ast. literal_eval
Phương thức literal_eval phân tích cú pháp và đánh giá một biểu thức cho kiểu dữ liệu Python một cách an toàn. Các loại dữ liệu được hỗ trợ là. chuỗi, số, bộ dữ liệu, danh sách, ký tự, booleans và Không
with open['/tmp/file.py', 'r'] as f: inp = ast.literal_eval[f.read[]]
Tệp CSV [dữ liệu phẳng]
Mô-đun CSV trong Python triển khai các lớp để đọc và ghi dữ liệu dạng bảng ở định dạng CSV
Ví dụ đơn giản để đọc
# Reading CSV content from a file import csv with open['/tmp/file.csv', newline=''] as f: reader = csv.reader[f] for row in reader: print[row]
Ví dụ đơn giản để viết
# Writing CSV content to a file import csv with open['/temp/file.csv', 'w', newline=''] as f: writer = csv.writer[f] writer.writerows[iterable]
Nội dung, chức năng và ví dụ của mô-đun có thể được tìm thấy trong tài liệu Python
YAML [dữ liệu lồng nhau]
Có nhiều mô-đun của bên thứ ba để phân tích cú pháp và đọc/ghi cấu trúc tệp YAML trong Python. Một ví dụ như vậy là dưới đây
# Reading YAML content from a file using the load method import yaml with open['/tmp/file.yaml', 'r', newline=''] as f: try: print[yaml.load[f]] except yaml.YAMLError as ymlexcp: print[ymlexcp]
Có thể tìm thấy tài liệu về mô-đun bên thứ ba trong Tài liệu PyYAML
Tệp JSON [dữ liệu lồng nhau]
Mô-đun JSON của Python có thể được sử dụng để đọc và ghi các tệp JSON. Mã ví dụ dưới đây
Đọc
# Reading JSON content from a file import json with open['/tmp/file.json', 'r'] as f: data = json.load[f]
Viết
________số 8_______
XML [dữ liệu lồng nhau]
Có thể phân tích cú pháp XML trong Python bằng cách sử dụng gói xml
Thí dụ
# reading XML content from a file import xml.etree.ElementTree as ET tree = ET.parse['country_data.xml'] root = tree.getroot[]
Thêm tài liệu về cách sử dụng xml. dom và xml. gói sax có thể được tìm thấy trong tài liệu thư viện Python XML
nhị phân
Mảng NumPy [dữ liệu phẳng]
Mảng NumPy của Python có thể được sử dụng để tuần tự hóa và giải tuần tự hóa dữ liệu đến và từ biểu diễn byte
Thí dụ
{"A" { "field1": "value1", "field2": "value2", "field3": "value3" } }0
Dưa chua [dữ liệu lồng nhau]
Mô-đun tuần tự hóa dữ liệu gốc cho Python được gọi là Pickle
Đây là một ví dụ
{"A" { "field1": "value1", "field2": "value2", "field3": "value3" } }1
nguyên mẫu
Nếu bạn đang tìm kiếm một mô-đun tuần tự hóa hỗ trợ nhiều ngôn ngữ, thư viện Protobuf của Google là một tùy chọn