Trong bài viết này, chúng tôi sẽ đề cập đến một số cách để làm sạch dữ liệu của bạn và giúp dữ liệu dễ đọc và truy cập hơn bằng cách sử dụng mô-đun
# Pretty Printed import pprint pprint.pprint[lst]3 tích hợp sẵn của Python
Hãy nhớ rằng, máy của bạn rất hiệu quả với dữ liệu của bạn, nhưng nó không quan tâm dữ liệu đó xuất hiện như thế nào đối với mắt người.
Vì vậy, hãy tìm hiểu cách thao tác dữ liệu của chúng tôi để đơn giản hóa việc phân tích
Danh sách pprint Python
Để in đẹp danh sách, hãy sử dụng hàm
# Pretty Printed import pprint pprint.pprint[lst]4 từ mô-đun
# Pretty Printed import pprint pprint.pprint[lst]5 đi kèm với thư viện chuẩn Python và không cần cài đặt thủ công. Đối với danh sách phẳng, mô-đun sẽ in một phần tử danh sách trên mỗi dòng nếu nó không vừa với một dòng đầu ra được in
Giả sử, bạn có danh sách 30 giá trị sau
# Not Pretty Printed lst = ['Alice', 'Bob', 'Carl'] * 10 print[lst]
đầu ra
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']
Việc ngắt dòng bắt buộc không được đẹp lắm. Cách đơn giản nhất để “làm đẹp” đầu ra là sử dụng pprint. chức năng pprint[] như vậy
# Pretty Printed import pprint pprint.pprint[lst]
đầu ra
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']
Theo mặc định, mô-đun sẽ in một phần tử trên mỗi dòng nếu toàn bộ đầu ra của danh sách không vừa với một dòng đầu ra được in
“Pretty Print” một tệp JSON bằng Python
💡 JSON hoặc “Ký hiệu đối tượng Javascript” là một định dạng được sử dụng để trình bày dữ liệu và là một định dạng trao đổi dữ liệu nhẹ, thân thiện với con người và máy móc cũng như rất thân thiện với Python
Tin tuyệt vời là nếu bạn đã biết một số Python và Javascript, điều này sẽ dễ dàng với bạn
Hãy nghĩ về từ điển trong Python để có ý tưởng về định dạng cho các cặp JSON – “key”/”value”. “Khóa” luôn là chuỗi, “giá trị” bao gồm int, Bool, mảng, none và các đối tượng khác
Có nhiều cách để lấy dữ liệu cho loại dự án này – Tôi đã tìm thấy một tệp JSON về nhân viên của một công ty giả mà tôi sẽ sử dụng cho bài học này. Bạn cũng có thể sử dụng
# Pretty Printed import pprint pprint.pprint[lst]6 từ mô-đun
# Pretty Printed import pprint pprint.pprint[lst]7 để lấy dữ liệu giả
Hãy nhập một số mã và xem
# Pretty Printed import pprint pprint.pprint[lst]5 hoạt động
Trước tiên, chúng ta cần nhập các công cụ của mình
import json from pprint import pp # 💡 Info: pp is an alias for pprint to save typing.
Tiếp theo, hãy viết một số mã để lấy dữ liệu của chúng tôi và gán nó cho một biến
with open['EmployeeData.json'] as json_file: data = json.load[json_file]
Tệp
# Pretty Printed import pprint pprint.pprint[lst]9 của chúng tôi đã được tải và gán cho biến
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']0.
Bây giờ, chúng ta có thể in cái này và xem đầu ra bằng cách sử dụng hàm
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']1 tiêu chuẩn
print[data]
đầu ra
[{'id': 4051, 'name': 'manoj', 'email': 'manoj@gmail.com', 'password': 'Test@123', 'about': None, 'token': '7f471974-ae46-4ac0-a882-1980c300c4d6', 'country': None, 'location': None, 'lng': 0, 'lat': 0, 'dob': None, 'gender': 0, 'userType': 1, 'userStatus': 1, 'profilePicture': 'Images/9b291404-bc2e-4806-88c5-08d29e65a5ad.png', 'coverPicture': 'Images/44af97d9-b8c9-4ec1-a099-010671db25b7.png', 'enablefollowme': False, 'sendmenotifications': False, 'sendTextmessages': False, 'enabletagging': False, 'createdAt': '2020-01-01T11:13:27.1107739', 'updatedAt': '2020-01-02T09:16:49.284864', 'livelng': 77.389849, 'livelat': 2
Như chúng ta có thể thấy, phần rất nhỏ này trong tổng số đầu ra chỉ là một khối thông tin lớn giống như những dòng dài của từ điển Python – không “đẹp” hay dễ đọc đối với con người
Hãy thực hiện bước đầu tiên để xem
# Pretty Printed import pprint pprint.pprint[lst]5 đang hoạt động
pp[data]
đầu ra
[{'id': 4051, 'name': 'manoj', 'email': 'manoj@gmail.com', 'password': 'Test@123', 'about': None, 'token': '7f471974-ae46-4ac0-a882-1980c300c4d6', 'country': None, 'location': None, 'lng': 0, 'lat': 0, 'dob': None, 'gender': 0, 'userType': 1, 'userStatus': 1, 'profilePicture': 'Images/9b291404-bc2e-4806-88c5-08d29e65a5ad.png', 'coverPicture': 'Images/44af97d9-b8c9-4ec1-a099-010671db25b7.png', 'enablefollowme': False, 'sendmenotifications': False, 'sendTextmessages': False, 'enabletagging': False, 'createdAt': '2020-01-01T11:13:27.1107739', 'updatedAt': '2020-01-02T09:16:49.284864', 'livelng': 77.389849, 'livelat': 28.6282231, 'liveLocation': 'Unnamed Road, Chhijarsi, Sector 63, Noida, Uttar Pradesh ' '201307, India', 'creditBalance': 127, 'myCash': 0}, {'id': 4050, 'name': 'pankaj', 'email': 'p1@gmail.com', 'password': 'Test@123', 'about': None, 'token': 'e269eeef-1de1-4438-885a-e30a9ad26106', 'country': None, 'location': None, 'lng': 0, 'lat': 0, 'dob': None, 'gender': 0, 'userType': 1, 'userStatus': 1, 'profilePicture': None,
Đây là một mẫu đầu ra ngắn khác, nhưng chúng ta có thể thấy dữ liệu của mình dễ đọc hơn nhiều như thế nào – được sắp xếp theo các cặp khóa-giá trị, mỗi cặp trên một dòng mới
Bạn có thể quét dữ liệu theo chiều dọc, chọn các khóa mà bạn quan tâm. Nó không đơn giản hơn thế nhiều và trong video được cung cấp ở phần đầu, tôi đã thử nghiệm với việc này xa hơn một chút.
Một điều khác cần lưu ý khi bạn phân tích đầu ra này là cấu trúc của dữ liệu JSON giống như danh sách từ điển của tôi trong phần tiếp theo
Sử dụng Python pprint để làm đẹp một từ điển
Chúng tôi đã thấy cách chúng tôi có thể làm cho tệp JSON đẹp hơn với
# Pretty Printed import pprint pprint.pprint[lst]5, bây giờ hãy tạo một từ điển và xem cách chúng tôi có thể điều khiển sự hấp dẫn trực quan và khả năng đọc của nó
Một lưu ý nhanh trước khi chúng tôi nhập mã ở đây. Có một số cách để có được kết quả mà chúng tôi muốn cho dữ liệu, vì vậy nếu bạn biết một cách khác để sử dụng
# Pretty Printed import pprint pprint.pprint[lst]5, điều đó thật tuyệt – chúng tôi không đề cập đến tất cả các khả năng của nó trong một bài viết này – chỉ đưa ra phần giới thiệu
Tôi đã tạo một danh sách các từ điển để sử dụng làm dữ liệu giả cho phần hướng dẫn này
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']0
đầu ra
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']1
Chúng ta có thể thấy rằng hàm
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']5 bình thường của Python cung cấp cho chúng ta một dòng mã liên tục và chia nhỏ danh sách gọn gàng và có tổ chức ban đầu của chúng ta
Bây giờ hãy xem chúng ta có thể làm gì với
# Pretty Printed import pprint pprint.pprint[lst]5
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']2
Tôi đã thêm tham số
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']7 để duy trì thứ tự dữ liệu của mình. Thêm về điều này trong một phút
đầu ra
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']3
Điều đó đưa chúng tôi trở lại đầu ra rõ ràng, có thể đọc được. Bây giờ, hãy xem loại giao diện nào khi thêm một số tham số khác của
# Pretty Printed import pprint pprint.pprint[lst]5 mang lại cho chúng ta
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']4
Tôi đã thêm tham số “
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']9” ở vị trí 2 để thay đổi cấu trúc của dữ liệu và “
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']7” thành
import json from pprint import pp # 💡 Info: pp is an alias for pprint to save typing.1 [theo mặc định là
import json from pprint import pp # 💡 Info: pp is an alias for pprint to save typing.2] nên
# Pretty Printed import pprint pprint.pprint[lst]5 sẽ không thay đổi thứ tự các mục nhập của tôi
đầu ra
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']5
Điều này mang lại cho chúng tôi một biểu diễn dữ liệu theo chiều dọc – một cái nhìn rất rõ ràng và thú vị về cùng một thông tin
Chúng ta cũng có thể thêm tham số “
import json from pprint import pp # 💡 Info: pp is an alias for pprint to save typing.4” được đặt thành 2 để tạo khoảng trống ở bên trái dữ liệu – lưu ý khoảng trắng sau dấu ngoặc nhọn giúp dữ liệu dễ đọc hơn một chút
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']6
đầu ra
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']7
Chúng tôi cũng có thể sử dụng chỉ mục được chỉ định để tìm kiếm tệp của mình cho một số nhân viên cụ thể, giống như chúng tôi làm với bất kỳ danh sách Python nào
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']8
đầu ra
['Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl', 'Alice', 'Bob', 'Carl']9
Và chúng tôi nhận được thông tin của nhân viên thứ hai Adam. Các hoạt động danh sách khác cũng có thể được thực hiện, chẳng hạn như cắt và nối thêm nếu chúng tôi có một mục mới cho dữ liệu của mình
Có nhiều cách khác mà bạn có thể thử nghiệm với
# Pretty Printed import pprint pprint.pprint[lst]5 và các tham số của nó.
Python pprint thành Chuỗi
💬 câu hỏi. Làm cách nào để phương thức
# Pretty Printed import pprint pprint.pprint[lst]4 của Python trả về một chuỗi thay vì in nó ra đầu ra tiêu chuẩn?
Để in đẹp thành một chuỗi thay vì đầu ra tiêu chuẩn, bạn có thể sử dụng hàm
import json from pprint import pp # 💡 Info: pp is an alias for pprint to save typing.7 thay vì
import json from pprint import pp # 💡 Info: pp is an alias for pprint to save typing.8. Giá trị trả về của hàm
import json from pprint import pp # 💡 Info: pp is an alias for pprint to save typing.9 là một chuỗi có thể được lưu vào một biến hoặc xử lý thêm
Đây là một ví dụ tối thiểu
# Pretty Printed import pprint pprint.pprint[lst]0
🌍 Tìm hiểu thêm. Trong trường hợp bạn cần một số thông tin về phương pháp tạo từ điển thứ ba trong danh sách từ điển của chúng tôi, hãy xem bài viết của chúng tôi về hiểu từ điển
đầu ra
# Pretty Printed import pprint pprint.pprint[lst]1
👉 Đọc thêm. Python – Làm cách nào để pprint[] thành Chuỗi không in ra Shell?
Python pprint vào tệp
Bạn có thể in thành tệp một cách đẹp mắt bằng cách sử dụng đối số
with open['EmployeeData.json'] as json_file: data = json.load[json_file]0 của hàm
import json from pprint import pp # 💡 Info: pp is an alias for pprint to save typing.8 và chuyển một đối tượng giống như tệp vào đó như thu được thông qua hàm
with open['EmployeeData.json'] as json_file: data = json.load[json_file]2 tích hợp sẵn của Python. Mô-đun
# Pretty Printed import pprint pprint.pprint[lst]5 sau đó sẽ tự động gọi hàm
with open['EmployeeData.json'] as json_file: data = json.load[json_file]4 trên đối tượng tệp
Ví dụ,
with open['EmployeeData.json'] as json_file: data = json.load[json_file]5 sẽ in đẹp nội dung của
with open['EmployeeData.json'] as json_file: data = json.load[json_file]6 vào tệp có tên
with open['EmployeeData.json'] as json_file: data = json.load[json_file]7
Phần sau đây cho thấy một ví dụ tối thiểu trong đó chúng ta chuyển đối số
with open['EmployeeData.json'] as json_file: data = json.load[json_file]0 dưới dạng đối số vị trí thứ hai vào hàm
# Pretty Printed import pprint pprint.pprint[lst]4
# Pretty Printed import pprint pprint.pprint[lst]2
“Đầu ra” là một tệp mới
print[data]0 với nội dung như sau
Phần kết luận
Lấy thông tin giới thiệu này và chạy với nó, bạn sẽ thấy rằng đây là một mô-đun mạnh mẽ mà bạn sẽ sử dụng nhiều lần trong các dự án dữ liệu Python của mình, đặc biệt là khi trao đổi dữ liệu từ máy chủ sang ứng dụng web