Xin chào các bạn. Hôm nay mình sẽ giới thiệu với các bạn về việc Xử lý file JSOn và file XML trong Python Show
Xử lý file JSONJSON là một trong những định dạng file trao đổi dữ liệu thông dụng nhất hiện nay. Với kiến trúc đơn giản và tương đồng với cấu trúc của Python nên việc thao tác JSON trên Python rất dễ hiểu. Load file từ InternetThông thường dữ liệu JSON được lấy từ nguồn khác (như file, internet..) nên chương này sẽ bắt đầu bằng cách hướng dẫn download một file JSON từ Internet và sau đó mới parsing nội dung JSON download. Sử dụng module urllib2 để download file và module json để encode/decode JSON data. Ví dụ:
Ví dụ trên sẽ truy vấn đường dẫn https://api.github.com/users/voduytuan/repos để lấy danh sách Repository trên Github của mình dưới định dạng JSON. Parsing JSON DataNếu như bạn đã có JSON data dưới dạng chuỗi, muốn parsing chuỗi này thành Data thì sử dụng như cách dưới đây:
Encoding JSON DataNếu như bạn đã có một biến và muốn encode thành JSON string thì có thể dùng theo cách sau:
Xử lý file XMLTrong phần này, chúng ta sẽ parsing nội dung XML thành dữ liệu để xử lý. Để xử lý XML, ta sẽ sử dụng thư viện Beautifulsoup 4. Đây là một thư viện giúp việc triển khai việc parsing html, xml được nhanh chóng và tiện lợi. Cài đặt BeautifulsoupBạn có thể tham khảo hướng dẫn cách cài đặt tại website http://www.crummy.com/software/BeautifulSoup/bs4/doc/#insbeautiful-soup. Trên MacOS, có thể cài bằng pip như sau:
Cài đặt import json mystring = '{"a":1,"b":2,"c":3,"d":4,"e":5}' data = json.loads(mystring) print data (Hiển thị: {u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}) 7 parserĐể parsing xml từ beautifulsoup, tao sử dụng bộ parser xml có tên là lxml . Xem hướng dẫn cài đặt tại http://www.crummy.com/software/BeautifulSoup/bs4/doc/#insa-parser Trên MacOS, có thể cài bằng pip như sau:
Cài đặt import json mystring = '{"a":1,"b":2,"c":3,"d":4,"e":5}' data = json.loads(mystring) print data (Hiển thị: {u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}) 7 parserĐể parsing xml từ beautifulsoup, tao sử dụng bộ parser xml có tên là lxml . Xem hướng dẫn cài đặt tại http://www.crummy.com/software/BeautifulSoup/bs4/doc/#insa-parser
Ví dụ về parsing XML
Cho ví dụ sau: Khi chạy thì sẽ hiển thị ra màn hình như sau:
import json mydata = { 'name': 'John', 'age': 10 } jsonstring = json.dumps(mydata) print jsonstring (hiển thị: {"age": 10, "name": "John"}) 0 : trả về phần tử đầu tiên có tên cần tìmTruy xuất trực tiếp thông qua tên thẻ như 1
Parsing HTML Tương tự như import json mydata = { 'name': 'John', 'age': 10 } jsonstring = json.dumps(mydata) print jsonstring (hiển thị: {"age": 10, "name": "John"}) 2 , BeautifulSoup có thể parsing nội dung HTML thông qua hàm khởi tạo và chọn import json mydata = { 'name': 'John', 'age': 10 } jsonstring = json.dumps(mydata) print jsonstring (hiển thị: {"age": 10, "name": "John"}) 3 ở tham số thứ 2.http://www.crummy.com/software/BeautifulSoup/bs4/doc/#insa-parser http://www.crummy.com/software/BeautifulSoup/bs4/doc/#insbeautiful-soup. Dưới đây mình đã giới thiệu với các bạn về Xử lý file JSOn và file XML trong Python và một số ví dụ cơ bản. Nếu có bất kì thắc mắc gì hãy để lại comment ở phía dưới nhé. Hôm nay chúng ta sẽ học cách chuyển đổi XML thành JSON và XML thành Dict in Python. Chúng ta có thể sử dụng mô -đun Python 4 để đọc tệp XML và chuyển đổi nó thành dữ liệu Dict hoặc JSON. Chúng ta cũng có thể phát trực tuyến trên các tệp XML lớn và chuyển đổi chúng thành từ điển. Trước khi bước vào phần mã hóa, trước tiên, chúng ta hãy hiểu lý do tại sao chuyển đổi XML là cần thiết.Chuyển đổi XML thành Dict/JSONCác tệp XML đã dần trở nên lỗi thời nhưng có những hệ thống khá lớn trên web vẫn sử dụng định dạng này. XML nặng hơn JSON và vì vậy, hầu hết các nhà phát triển thích cái sau trong các ứng dụng của họ. Khi các ứng dụng cần hiểu XML được cung cấp bởi bất kỳ nguồn nào, đó có thể là một nhiệm vụ tẻ nhạt để chuyển đổi nó thành JSON. Mô -đun 4 trong Python làm cho nhiệm vụ này trở nên cực kỳ dễ dàng và đơn giản để thực hiện.Bắt đầu với xmltodictChúng tôi có thể bắt đầu với mô -đun 4 nhưng chúng tôi cần cài đặt nó trước. Chúng tôi sẽ chủ yếu sử dụng PIP để thực hiện cài đặt.Cài đặt mô -đun XMLTodictDưới đây là cách chúng tôi có thể cài đặt mô -đun XMLTodict bằng Chỉ số Gói Python (PIP):
Điều này sẽ được thực hiện nhanh chóng vì 4 là một mô -đun trọng lượng rất nhẹ. Dưới đây là đầu ra cho bản cài đặt này: Điều tốt nhất về cài đặt này là mô-đun này không phụ thuộc vào bất kỳ mô-đun bên ngoài nào khác và vì vậy, nó có trọng lượng nhẹ và tránh mọi xung đột phiên bản. Chỉ để chứng minh, trên các hệ thống dựa trên Debian, mô -đun này có thể dễ dàng cài đặt bằng công cụ 8: The best thing about this installation was that this module is not dependent on any other external module and so, it is light-weight and avoids any version conflicts. Just to demonstrate, on Debian based systems, this module can be easily installed using the 8
tool:
Một điểm cộng nữa là mô -đun này có gói Debian chính thức. Python xml to jsonNơi tốt nhất để bắt đầu thử mô -đun này sẽ là thực hiện một thao tác được thực hiện để thực hiện chủ yếu, để thực hiện chuyển đổi XML sang JSON. Hãy cùng nhìn vào một đoạn mã về cách thực hiện điều này: 0Hãy cùng xem đầu ra cho chương trình này: Ở đây, chúng tôi chỉ cần sử dụng chức năng 9 để chuyển đổi dữ liệu XML thành JSON và sau đó chúng tôi sử dụng mô -đun 0 để in JSON ở định dạng tốt hơn. Here, we simply use the 9 function to convert XML data to JSON and then we use the 0 module to print JSON in a better format.Chuyển đổi tệp XML thành JSONGiữ dữ liệu XML trong bản thân mã không phải lúc nào cũng không thể thực tế. Thông thường, chúng tôi giữ dữ liệu của chúng tôi trong cơ sở dữ liệu hoặc một số tệp. Chúng tôi có thể trực tiếp chọn các tập tin và chuyển đổi chúng thành JSON là tốt. Hãy cùng xem một đoạn mã cách chúng ta có thể thực hiện chuyển đổi với tệp XML: 1Hãy cùng xem đầu ra cho chương trình này: Ở đây, chúng tôi đã sử dụng một mô -đun khác pprint để in đầu ra theo cách định dạng. Ngoài ra, sử dụng hàm 1 rất đơn giản, chúng tôi đã sử dụng nó nhận được một mô tả tệp và sau đó phân tích tệp vào một đối tượng JSON. Here, we used another module pprint to print the output in a formatted manner. Apart from that, using the 1 function was straightforward, we used it get a File descriptor and then parsed the file into a JSON
object.Python xml để dictNhư tên mô -đun đề xuất, XMLTodict thực sự chuyển đổi dữ liệu XML mà chúng tôi cung cấp chỉ cho một từ điển Python đơn giản. Vì vậy, chúng tôi chỉ có thể truy cập dữ liệu với các khóa từ điển là tốt. Đây là một chương trình mẫu: 2Hãy cùng xem đầu ra cho chương trình này: Vì vậy, các thẻ có thể được sử dụng làm khóa cùng với các khóa thuộc tính. Các khóa thuộc tính chỉ cần được đặt tiền tố với biểu tượng 2. So, the tags can be used as the keys along with the attribute keys as well. The attribute keys just need to be prefixed with the 2 symbol.Hỗ trợ các không gian tên trong XMLTrong dữ liệu XML, chúng ta thường có một tập hợp các không gian tên xác định phạm vi của dữ liệu được cung cấp bởi tệp XML. Trong khi chuyển đổi sang định dạng JSON, thì điều cần thiết là các không gian tên này cũng vẫn tồn tại ở định dạng JSON. Hãy để chúng tôi xem xét tệp XML mẫu này: 3Dưới đây là một chương trình mẫu về cách chúng ta có thể bao gồm các không gian tên XML ở định dạng JSON: 4Hãy cùng xem đầu ra cho chương trình này: JSON sang XML chuyển đổiMặc dù chuyển đổi từ XML sang JSON là mục tiêu chính của mô -đun này, XMLTodict cũng hỗ trợ thực hiện thao tác ngược, chuyển đổi JSON thành dạng XML. Chúng tôi sẽ cung cấp dữ liệu JSON trong chính chương trình. Đây là một chương trình mẫu: 5Hãy cùng xem đầu ra cho chương trình này: Xin lưu ý rằng việc cung cấp một khóa JSON duy nhất là cần thiết để việc này hoạt động chính xác. Nếu chúng tôi xem xét rằng chúng tôi sửa đổi chương trình của mình để chứa nhiều khóa JSON ở cấp độ đầu tiên của dữ liệu như: Please note that giving a single JSON key is necessary for this to work correctly. If we consider that we modify our program to contain multiple JSON keys at the very first level of data like: 6Trong trường hợp này, chúng tôi có ba phím ở cấp độ gốc. Nếu chúng ta cố gắng không phân chia hình thức JSON này, chúng ta sẽ phải đối mặt với lỗi này: Điều này xảy ra vì xmltodict cần xây dựng JSON với khóa đầu tiên là thẻ XML gốc. Điều này có nghĩa là chỉ nên có một khóa JSON duy nhất ở cấp độ gốc của dữ liệu. This happens because xmltodict needs to construct the JSON with the very first key as the root XML tag. This means that there should only be a single JSON key at the root level of data.Sự kết luậnTrong bài học này, chúng tôi đã nghiên cứu một mô-đun Python tuyệt vời có thể được sử dụng để phân tích và chuyển đổi XML thành JSON và ngược lại. Chúng tôi cũng đã học cách chuyển đổi XML thành Dict bằng mô -đun XMLTodict. Tham khảo: API Doc |