Hướng dẫn how do you analyse json data in python? - làm thế nào để bạn phân tích dữ liệu json trong python?
Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Làm việc với dữ liệu JSON trong Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Working With JSON Data in Python Show
Kể từ khi thành lập, JSON đã nhanh chóng trở thành tiêu chuẩn thực tế để trao đổi thông tin. Rất có thể bạn ở đây vì bạn cần phải vận chuyển một số dữ liệu từ đây đến đó. Có lẽ bạn đang thu thập thông tin thông qua API hoặc lưu trữ dữ liệu của bạn trong cơ sở dữ liệu tài liệu. Bằng cách này hay cách khác, bạn đã lên cổ trong JSON, và bạn đã phải đi ra ngoài. May mắn thay, đây là một nhiệm vụ khá phổ biến, và là với hầu hết các nhiệm vụ phổ biến, Popthon, làm cho nó gần như dễ dàng một cách dễ chịu. Không sợ hãi, đồng nghiệp Pythoneers và Pythonistas. Điều này sẽ là một làn gió!
A (rất) lịch sử ngắn gọn của JSONKhông có gì đáng ngạc nhiên, ký hiệu đối tượng JavaScript được lấy cảm hứng từ một tập hợp con của ngôn ngữ lập trình JavaScript liên quan đến cú pháp theo nghĩa đen đối tượng. Họ đã có một trang web tiện lợi giải thích toàn bộ. Mặc dù vậy, đừng lo lắng: JSON từ lâu đã trở thành bất khả tri ngôn ngữ và tồn tại như tiêu chuẩn của riêng nó, vì vậy chúng tôi có thể tránh được JavaScript vì mục đích của cuộc thảo luận này.JavaScript Object Notation was inspired by a subset of the JavaScript programming language dealing with object literal syntax. They’ve got a nifty website that explains the whole thing. Don’t worry though: JSON has long since become language agnostic and exists as its own standard, so we can thankfully avoid JavaScript for the sake of this discussion. Cuối cùng, cộng đồng lớn đã thông qua JSON vì nó dễ dàng cho cả con người và máy móc tạo ra và hiểu. Hãy nhìn xem, nó JSON JSON!Chuẩn bị. Tôi sắp sửa cho bạn thấy một số Json ngoài đời thực giống như bạn nhìn thấy ngoài kia trong tự nhiên. Nó không sao: JSON được cho là có thể đọc được bởi bất kỳ ai đã sử dụng ngôn ngữ theo phong cách C và Python là ngôn ngữ theo phong cách C, vì vậy, bạn!
Như bạn có thể thấy, JSON hỗ trợ các loại nguyên thủy, như chuỗi và số, cũng như các danh sách và đối tượng lồng nhau.
Whew! Bạn đã sống sót sau cuộc gặp gỡ đầu tiên của bạn với một số JSON hoang dã. Bây giờ bạn chỉ cần học cách chế ngự nó. Python hỗ trợ JSON nguyên bản!Python đi kèm với một gói tích hợp có tên 0 để mã hóa và giải mã dữ liệu JSON.Chỉ cần ném anh chàng nhỏ bé này lên đầu tập tin của bạn: Một từ vựng nhỏQuá trình mã hóa JSON thường được gọi là tuần tự hóa. Thuật ngữ này đề cập đến việc chuyển đổi dữ liệu thành một loạt byte (do đó nối tiếp) được lưu trữ hoặc truyền qua một mạng. Bạn cũng có thể nghe thấy thuật ngữ sắp xếp, nhưng đó là một cuộc thảo luận hoàn toàn khác. Đương nhiên, việc giải phóng hóa là quá trình đối ứng của việc giải mã dữ liệu đã được lưu trữ hoặc phân phối theo tiêu chuẩn JSON.serialization. This term refers to the transformation of data into a series of bytes (hence serial) to be stored or transmitted across a network. You may also hear the term marshaling, but that’s a whole other discussion. Naturally, deserialization is the reciprocal process of decoding data that has been stored or delivered in the JSON standard.
Nối tiếp jsonĐiều gì xảy ra sau khi một máy tính xử lý rất nhiều thông tin? Nó cần phải lấy một kết xuất dữ liệu. Theo đó, thư viện 0 hiển thị phương thức 2 để ghi dữ liệu vào các tệp. Ngoài ra còn có một phương thức 3 (phát âm là Dump Dump-Siêu) để viết vào chuỗi Python.Các đối tượng Python đơn giản được dịch sang JSON theo một chuyển đổi khá trực quan.
Một ví dụ tuần tự hóa đơn giảnHãy tưởng tượng bạn làm việc với một đối tượng Python trong bộ nhớ trông hơi giống như thế này:
Điều quan trọng là bạn lưu thông tin này vào đĩa, vì vậy nhiệm vụ của bạn là viết nó vào một tệp. Sử dụng trình quản lý bối cảnh Python, bạn có thể tạo một tệp có tên 1 và mở nó ở chế độ ghi. (Tệp JSON kết thúc thuận tiện trong tiện ích mở rộng 2.)
Lưu ý rằng 2 có hai đối số vị trí: (1) đối tượng dữ liệu được tuần tự hóa và (2) đối tượng giống như tệp mà các byte sẽ được viết.Hoặc, nếu bạn có khuynh hướng tiếp tục sử dụng dữ liệu JSON được tuần tự hóa này trong chương trình của mình, bạn có thể viết nó vào một đối tượng Python 9 gốc.
Lưu ý rằng đối tượng giống như tệp không có vì bạn không thực sự viết vào đĩa. Ngoài ra, 3 giống như 2.Hoan hô! Bạn đã sinh ra một số em bé JSON, và bạn đã sẵn sàng phát hành nó ra tự nhiên để phát triển lớn và mạnh mẽ. Một số đối số từ khóa hữu íchHãy nhớ rằng, JSON có nghĩa là dễ dàng đọc được bởi con người, nhưng cú pháp có thể đọc được là đủ nếu tất cả đều bị vắt cùng nhau. Ngoài ra, bạn có thể có một phong cách lập trình khác với tôi và bạn có thể dễ dàng đọc mã hơn khi nó được định dạng theo ý thích của bạn.
Tùy chọn đầu tiên mà hầu hết mọi người muốn thay đổi là khoảng trắng. Bạn có thể sử dụng đối số từ khóa 9 để chỉ định kích thước thụt cho các cấu trúc lồng nhau. Kiểm tra sự khác biệt cho chính mình bằng cách sử dụng 0, mà chúng tôi đã xác định ở trên và chạy các lệnh sau trong bảng điều khiển:>>>
Một tùy chọn định dạng khác là đối số từ khóa 1. Theo mặc định, đây là 2-Tuple của chuỗi phân cách 2, nhưng một giải pháp thay thế phổ biến cho JSON nhỏ gọn là 3. Hãy nhìn vào JSON mẫu một lần nữa để xem các phân tách này đi vào nơi nào.
Có những người khác, như 4, nhưng tôi không biết điều đó làm gì. Bạn có thể tìm thấy một danh sách toàn bộ trong các tài liệu nếu bạn tò mò.Deserializing jsonTuyệt vời, có vẻ như bạn đã bắt giữ mình một số Json hoang dã! Bây giờ nó thời gian để đánh nó thành hình dạng. Trong thư viện 0, bạn sẽ tìm thấy 6 và 7 để biến dữ liệu được mã hóa JSON thành các đối tượng Python.Giống như tuần tự hóa, có một bảng chuyển đổi đơn giản để giải phóng, mặc dù bạn có thể đoán được nó trông như thế nào.
Về mặt kỹ thuật, chuyển đổi này không phải là một nghịch đảo hoàn hảo với bảng tuần tự hóa. Điều đó về cơ bản có nghĩa là nếu bạn mã hóa một đối tượng ngay bây giờ và sau đó giải mã lại sau, bạn có thể không nhận được chính xác cùng một đối tượng. Tôi tưởng tượng nó có một chút giống như dịch chuyển tức thời: phá vỡ các phân tử của tôi ở đây và đặt chúng trở lại với nhau ở đó. Tôi vẫn là cùng một người? Trong thực tế, nó có lẽ giống như một người bạn dịch một cái gì đó sang tiếng Nhật và một người bạn khác để dịch nó sang tiếng Anh. Bất kể, ví dụ đơn giản nhất sẽ là mã hóa 7 và lấy lại 6 sau khi giải mã, như vậy:>>>
Một tùy chọn định dạng khác là đối số từ khóa with open("data_file.json", "r") as read_file: data = json.load(read_file) 1. Theo mặc định, đây là 2-Tuple của chuỗi phân cách with open("data_file.json", "r") as read_file: data = json.load(read_file) 2, nhưng một giải pháp thay thế phổ biến cho JSON nhỏ gọn là with open("data_file.json", "r") as read_file: data = json.load(read_file) 3. Hãy nhìn vào JSON mẫu một lần nữa để xem các phân tách này đi vào nơi nào.Có những người khác, như 4, nhưng tôi không biết điều đó làm gì. Bạn có thể tìm thấy một danh sách toàn bộ trong các tài liệu nếu bạn tò mò.
Deserializing json Tuyệt vời, có vẻ như bạn đã bắt giữ mình một số Json hoang dã! Bây giờ nó thời gian để đánh nó thành hình dạng. Trong thư viện 0, bạn sẽ tìm thấy 6 và 7 để biến dữ liệu được mã hóa JSON thành các đối tượng Python.
Giống như tuần tự hóa, có một bảng chuyển đổi đơn giản để giải phóng, mặc dù bạn có thể đoán được nó trông như thế nào. JsonPython 5 4 8 6 0
9>>> 0 4 (int)
Được rồi, thời gian cho một số hành động. Bạn có thể thấy cấu trúc của dữ liệu bằng cách truy cập điểm cuối trong trình duyệt, nhưng ở đây, một mẫu TODO: 1Có nhiều người dùng, mỗi người có một 9 duy nhất và mỗi tác vụ có thuộc tính boolean 00. Bạn có thể xác định người dùng nào đã hoàn thành nhiều nhiệm vụ nhất không? 2Vâng, vâng, việc triển khai của bạn tốt hơn, nhưng vấn đề là, bây giờ bạn có thể thao tác dữ liệu JSON như một đối tượng Python bình thường! Tôi không biết về bạn, nhưng khi tôi chạy tập lệnh tương tác một lần nữa, tôi nhận được kết quả sau: >>> 3Điều đó thật tuyệt và tất cả, nhưng bạn ở đây để tìm hiểu về JSON. Đối với nhiệm vụ cuối cùng của bạn, bạn sẽ tạo một tệp JSON chứa TODO đã hoàn thành cho mỗi người dùng đã hoàn thành số lượng TODO tối đa.completed TODOs for each of the users who completed the maximum number of TODOs. Tất cả những gì bạn cần làm là lọc 7 và viết danh sách kết quả vào một tệp. Vì mục đích độc đáo, bạn có thể gọi tệp đầu ra 02. Có nhiều cách bạn có thể đi về điều này, nhưng ở đây, một: 4Hoàn hảo, bạn đã thoát khỏi tất cả các dữ liệu bạn không cần và lưu những thứ tốt cho một tập tin hoàn toàn mới! Chạy lại tập lệnh và kiểm tra 02 để xác minh mọi thứ hoạt động. Nó sẽ nằm trong cùng thư mục với 0 khi bạn chạy nó.Bây giờ bạn đã làm cho nó đến nay, tôi cá là bạn cảm thấy như một số thứ khá nóng, phải không? Don lồng nhận được Cocky: Sự khiêm tốn là một đức tính. Tôi có xu hướng đồng ý với bạn mặc dù. Cho đến nay, nó đã được chèo thuyền suôn sẻ, nhưng bạn có thể muốn hạ gục các cửa hầm cho chặng cuối của cuộc hành trình này. Mã hóa và giải mã các đối tượng Python tùy chỉnhĐiều gì xảy ra khi chúng tôi cố gắng tuần tự hóa lớp 05 từ ứng dụng Dungeons & Dragons mà bạn đang làm việc? 5Không có gì đáng ngạc nhiên, Python phàn nàn rằng 05 không phải là serializable (mà bạn đã biết nếu bạn đã từng cố gắng nói với một ELF nếu không):>>> 6Điều đó thật tuyệt và tất cả, nhưng bạn ở đây để tìm hiểu về JSON. Đối với nhiệm vụ cuối cùng của bạn, bạn sẽ tạo một tệp JSON chứa TODO đã hoàn thành cho mỗi người dùng đã hoàn thành số lượng TODO tối đa. Tất cả những gì bạn cần làm là lọc response = requests.get("https://jsonplaceholder.typicode.com/todos") todos = json.loads(response.text) 7 và viết danh sách kết quả vào một tệp. Vì mục đích độc đáo, bạn có thể gọi tệp đầu ra data = { "president": { "name": "Zaphod Beeblebrox", "species": "Betelgeusian" } } 02. Có nhiều cách bạn có thể đi về điều này, nhưng ở đây, một:Hoàn hảo, bạn đã thoát khỏi tất cả các dữ liệu bạn không cần và lưu những thứ tốt cho một tập tin hoàn toàn mới! Chạy lại tập lệnh và kiểm tra 02 để xác minh mọi thứ hoạt động. Nó sẽ nằm trong cùng thư mục với 0 khi bạn chạy nó.Bây giờ bạn đã làm cho nó đến nay, tôi cá là bạn cảm thấy như một số thứ khá nóng, phải không? Don lồng nhận được Cocky: Sự khiêm tốn là một đức tính. Tôi có xu hướng đồng ý với bạn mặc dù. Cho đến nay, nó đã được chèo thuyền suôn sẻ, nhưng bạn có thể muốn hạ gục các cửa hầm cho chặng cuối của cuộc hành trình này. Mã hóa và giải mã các đối tượng Python tùy chỉnh >>> 7
Tất cả những gì bạn cần làm là lọc 7 và viết danh sách kết quả vào một tệp. Vì mục đích độc đáo, bạn có thể gọi tệp đầu ra 02. Có nhiều cách bạn có thể đi về điều này, nhưng ở đây, một:What is the minimum amount of information necessary to recreate this object? In the case of complex numbers, you only need to know the real and imaginary parts, both of which you can access as attributes on the 10 object:>>> 8Điều đó thật tuyệt và tất cả, nhưng bạn ở đây để tìm hiểu về JSON. Đối với nhiệm vụ cuối cùng của bạn, bạn sẽ tạo một tệp JSON chứa TODO đã hoàn thành cho mỗi người dùng đã hoàn thành số lượng TODO tối đa. >>> 9Điều đó thật tuyệt và tất cả, nhưng bạn ở đây để tìm hiểu về JSON. Đối với nhiệm vụ cuối cùng của bạn, bạn sẽ tạo một tệp JSON chứa TODO đã hoàn thành cho mỗi người dùng đã hoàn thành số lượng TODO tối đa. Tất cả những gì bạn cần làm là lọc response = requests.get("https://jsonplaceholder.typicode.com/todos") todos = json.loads(response.text) 7 và viết danh sách kết quả vào một tệp. Vì mục đích độc đáo, bạn có thể gọi tệp đầu ra data = { "president": { "name": "Zaphod Beeblebrox", "species": "Betelgeusian" } } 02. Có nhiều cách bạn có thể đi về điều này, nhưng ở đây, một:Hoàn hảo, bạn đã thoát khỏi tất cả các dữ liệu bạn không cần và lưu những thứ tốt cho một tập tin hoàn toàn mới! Chạy lại tập lệnh và kiểm tra 02 để xác minh mọi thứ hoạt động. Nó sẽ nằm trong cùng thư mục với 0 khi bạn chạy nó. 0Bây giờ bạn đã làm cho nó đến nay, tôi cá là bạn cảm thấy như một số thứ khá nóng, phải không? Don lồng nhận được Cocky: Sự khiêm tốn là một đức tính. Tôi có xu hướng đồng ý với bạn mặc dù. Cho đến nay, nó đã được chèo thuyền suôn sẻ, nhưng bạn có thể muốn hạ gục các cửa hầm cho chặng cuối của cuộc hành trình này. >>> 1
Cách tiếp cận phổ biến khác là phân lớp tiêu chuẩn 20 và ghi đè phương thức 21 của nó: 2Thay vì tự nâng cao 18, bạn chỉ cần để lớp cơ sở xử lý nó. Bạn có thể sử dụng điều này trực tiếp trong phương thức 2 thông qua tham số 24 hoặc bằng cách tạo một thể hiện của bộ mã hóa và gọi phương thức 25 của nó:>>> 3Giải mã các loại tùy chỉnhMặc dù các phần thực và tưởng tượng của một con số phức tạp là hoàn toàn cần thiết, nhưng chúng thực sự không đủ để tạo lại đối tượng. Đây là những gì xảy ra khi bạn thử mã hóa một số phức với 26 và sau đó giải mã kết quả:>>> 4Giải mã các loại tùy chỉnh Mặc dù các phần thực và tưởng tượng của một con số phức tạp là hoàn toàn cần thiết, nhưng chúng thực sự không đủ để tạo lại đối tượng. Đây là những gì xảy ra khi bạn thử mã hóa một số phức với 26 và sau đó giải mã kết quả:What is the minimum amount of information that is both necessary and sufficient to recreate this object?Tất cả những gì bạn nhận được là một danh sách và bạn phải chuyển các giá trị vào một hàm tạo 10 nếu bạn muốn một lần nữa đối tượng phức tạp đó. Nhớ lại cuộc thảo luận của chúng tôi về dịch chuyển tức thời. Những gì thiếu thiếu là siêu dữ liệu, hoặc thông tin về loại dữ liệu mà bạn mã hóa. 5Tôi cho rằng câu hỏi mà bạn thực sự nên tự hỏi mình là lượng thông tin tối thiểu vừa cần thiết và đủ để tạo lại đối tượng này là bao nhiêu? 6Mô -đun 0 dự kiến tất cả các loại tùy chỉnh sẽ được biểu thị là 29 trong tiêu chuẩn JSON. Đối với Variety, bạn có thể tạo tệp JSON lần này được gọi là 30 và thêm 5 sau đây đại diện cho một số phức:Xem bit thông minh? Đó là khóa 32 là siêu dữ liệu mà chúng ta vừa nói đến. Nó không thực sự quan trọng giá trị liên quan là gì. Để khiến bản hack nhỏ này hoạt động, tất cả những gì bạn cần làm là xác minh rằng chính tồn tại:Nếu 32 không có trong từ điển, bạn chỉ có thể trả lại đối tượng và để bộ giải mã mặc định xử lý nó.>>> 7Giải mã các loại tùy chỉnh Mặc dù các phần thực và tưởng tượng của một con số phức tạp là hoàn toàn cần thiết, nhưng chúng thực sự không đủ để tạo lại đối tượng. Đây là những gì xảy ra khi bạn thử mã hóa một số phức với 26 và sau đó giải mã kết quả: 8Tất cả những gì bạn nhận được là một danh sách và bạn phải chuyển các giá trị vào một hàm tạo 10 nếu bạn muốn một lần nữa đối tượng phức tạp đó. Nhớ lại cuộc thảo luận của chúng tôi về dịch chuyển tức thời. Những gì thiếu thiếu là siêu dữ liệu, hoặc thông tin về loại dữ liệu mà bạn mã hóa.>>> 9Giải mã các loại tùy chỉnh Mặc dù các phần thực và tưởng tượng của một con số phức tạp là hoàn toàn cần thiết, nhưng chúng thực sự không đủ để tạo lại đối tượng. Đây là những gì xảy ra khi bạn thử mã hóa một số phức với data = { "president": { "name": "Zaphod Beeblebrox", "species": "Betelgeusian" } } 26 và sau đó giải mã kết quả:Tất cả những gì bạn nhận được là một danh sách và bạn phải chuyển các giá trị vào một hàm tạo 10 nếu bạn muốn một lần nữa đối tượng phức tạp đó. Nhớ lại cuộc thảo luận của chúng tôi về dịch chuyển tức thời. Những gì thiếu thiếu là siêu dữ liệu, hoặc thông tin về loại dữ liệu mà bạn mã hóa.Tôi cho rằng câu hỏi mà bạn thực sự nên tự hỏi mình là lượng thông tin tối thiểu vừa cần thiết và đủ để tạo lại đối tượng này là bao nhiêu?
Bây giờ chơi cùng một loại trò chơi như trước: Trong khi 36 có thể cảm thấy giống như đối tác với tham số 2 ____ ____116, sự tương tự thực sự bắt đầu và kết thúc ở đó.Điều này cũng không chỉ hoạt động với một đối tượng. Hãy thử đặt danh sách các số phức tạp này vào 30 và chạy lại tập lệnh:Nếu mọi việc suôn sẻ, bạn sẽ nhận được một danh sách các đối tượng Cách tốt nhất để làm việc với JSON trong Python là gì?Bắt đầu bằng cách nhập thư viện JSON. Chúng tôi sử dụng chức năng mở để đọc tệp JSON và sau đó là phương thức json.load () để phân tích chuỗi JSON vào từ điển Python có tên Superherosquad.Đó là nó! We use the function open to read the JSON file and then the method json. load() to parse the JSON string into a Python dictionary called superHeroSquad. That's it!
Làm thế nào trích xuất dữ liệu cụ thể từ JSON Python?Làm thế nào để bạn gọi dữ liệu JSON trong Python ?.. Tạo một tệp python mới một json nhập .. Crate một từ điển dưới dạng một chuỗi để sử dụng làm json .. Sử dụng mô -đun JSON để chuyển đổi chuỗi của bạn thành từ điển .. Viết một lớp để tải dữ liệu từ chuỗi của bạn .. Khởi tạo một đối tượng từ lớp của bạn và in một số dữ liệu từ nó .. Phương pháp nào được sử dụng để đọc dữ liệu từ JSON?Bạn có thể sử dụng phương thức JSON.LOAD () để đọc một tệp có chứa đối tượng JSON.json. load() method to read a file containing JSON object. |