Trong bài viết này, chúng ta sẽ tìm hiểu nhiều cách khác nhau để phân tích các tệp YAML trong Python. Chúng tôi sẽ sử dụng một số mô-đun và thư viện tích hợp có sẵn trong Python cũng như một số ví dụ tùy chỉnh có liên quan. Trước tiên, hãy xem nhanh toàn bộ dạng YAML, giới thiệu về YAML, sau đó đọc về các mô-đun phân tích cú pháp khác nhau để đọc tài liệu YAML trong Python
Giới thiệu về YAML
YAML là viết tắt của YAML Ain't Markup Language
. Đây là ngôn ngữ tuần tự hóa mà con người có thể đọc được thường được sử dụng cho các tệp cấu hình và mục đích lưu trữ dữ liệu. Phương pháp đọc thông tin từ tệp YAML và phân tích sâu hơn cấu trúc logic của nó được gọi là Phân tích cú pháp. Phân tích tệp YAML bằng Python đọc nội dung của tệp YAML thành Python dưới dạng từ điển. Các tệp YAML có thể có. yml hoặc. yaml làm loại phần mở rộng tệp
Chúng tôi sẽ phân tích cú pháp hai tệp YAML được đề cập trong bài viết này- mục. yaml và dữ liệu. khoai mỡ
//mặt hàng. khoai mỡ
cap: 1
purse: 5
books: 23
case: 2
bottles: 12
pens: 6
//dữ liệu. khoai mỡ
country:
- Algeria
- Bangladesh
- Poland
- Guinea
- Denmark
---
company:
- Getsocio
- Flyder
- Powerstorm
- Indofood
Hãy để chúng tôi thảo luận về nhiều cách khác nhau để phân tích hai tệp YAML ở trên
Phân tích tệp YAML bằng hàm load[]
Ví dụ dưới đây nhập mô-đun yaml
của Python. Python cung cấp hàm yaml.load[]
để phân tích nội dung của tệp đã cho. Nó chuyển đổi tệp YAML thành đối tượng Python và in nội dung dưới dạng Từ điển Python. Nó là trình phân tích và trình phát YAML được đề xuất cho Python. Tệp được truyền dưới dạng đối số cho hàm. Nó trích xuất dữ liệu bằng cách sử dụng các phương pháp từ điển tiêu chuẩn [dict. phím [], chính tả. giá trị[]]
Thí dụ
Chúng tôi sử dụng nó khi dữ liệu đến từ các nguồn đáng tin cậy. Ngoài ra, nó tránh thực thi mã tùy ý
import yaml
with open['items.yml'] as f:
dict = yaml.load[f, Loader=yaml.FullLoader]
print[dict]
{'mũ lưỡi trai'. 1, 'ví'. 5, 'sách'. 23, 'trường hợp'. 2, 'chai'. 12, 'bút'. 6}
Ví dụ2
Điều này hoạt động tương tự như đoạn mã trên nhưng nó chỉ được sử dụng khi dữ liệu đến từ các nguồn không đáng tin cậy
import yaml
with open['items.yml'] as f:
dict = yaml.load[f, Loader=yaml.SafeLoader]
print[dict]
{'mũ lưỡi trai'. 1, 'ví'. 5, 'sách'. 23, 'trường hợp'. 2, 'chai'. 12, 'bút'. 6}
Phân tích tệp YAML bằng hàm full_load[]
Ví dụ dưới đây nhập mô-đun yaml
của Python. Python cung cấp hàm
country:
- Algeria
- Bangladesh
- Poland
- Guinea
- Denmark
---
company:
- Getsocio
- Flyder
- Powerstorm
- Indofood
1 để phân tích nội dung của tệp đã cho. Nó lấy một tệp làm đối số của nó và trả về nội dung của tệp ở dạng cặp khóa-giá trịimport yaml
with open['items.yml'] as f:
dict = yaml.full_load[f]
print[dict]
{'mũ lưỡi trai'. 1, 'ví'. 5, 'sách'. 23, 'trường hợp'. 2, 'chai'. 12, 'bút'. 6}
Phân tích nhiều tài liệu YAML bằng hàm load_all[]
Ví dụ dưới đây nhập mô-đun yaml
của Python. Python cung cấp hàm
country:
- Algeria
- Bangladesh
- Poland
- Guinea
- Denmark
---
company:
- Getsocio
- Flyder
- Powerstorm
- Indofood
3 để phân tích nội dung của tệp đã cho. Chức năng này có thể phân tích nhiều tài liệu YAML có trong một tệp như được hiển thị trong dữ liệu. tập tin yaml. Nó in dữ liệu riêng biệt dưới dạng danh sáchimport yaml
with open['data.yml'] as f:
docs = yaml.load_all[f, Loader=yaml.FullLoader]
for x in docs:
for k, v in x.items[]:
print[k, ":", v]
quốc gia. ['Algeria', 'Bangladesh', 'Ba Lan', 'Guinea', 'Đan Mạch']
Công ty. ['Getsocio', 'Flyder', 'Powerstorm', 'Indofood']
Phân tích tệp YAML bằng yaml. safe_load[]
Một cách tiếp cận khác để phân tích cú pháp tệp YAML là sử dụng hàm
country:
- Algeria
- Bangladesh
- Poland
- Guinea
- Denmark
---
company:
- Getsocio
- Flyder
- Powerstorm
- Indofood
4. Nó có thể được sử dụng để tải dữ liệu bởi các nguồn không đáng tin cậyimport yaml
with open['items.yml'] as f:
dict = yaml.safe_load[f]
print[dict]
{'mũ lưỡi trai'. 1, 'ví'. 5, 'sách'. 23, 'trường hợp'. 2, 'chai'. 12, 'bút'. 6}
Phần kết luận
Trong bài viết này, chúng ta đã tìm hiểu về tệp YAML và các cách khác nhau để phân tích cú pháp tệp YAML bằng cách sử dụng một số hàm tích hợp sẵn của yaml được Python hỗ trợ, chẳng hạn như
country:
- Algeria
- Bangladesh
- Poland
- Guinea
- Denmark
---
company:
- Getsocio
- Flyder
- Powerstorm
- Indofood
5, country:
- Algeria
- Bangladesh
- Poland
- Guinea
- Denmark
---
company:
- Getsocio
- Flyder
- Powerstorm
- Indofood
6, country:
- Algeria
- Bangladesh
- Poland
- Guinea
- Denmark
---
company:
- Getsocio
- Flyder
- Powerstorm
- Indofood
7 và country:
- Algeria
- Bangladesh
- Poland
- Guinea
- Denmark
---
company:
- Getsocio
- Flyder
- Powerstorm
- Indofood
8. Chúng tôi cũng đã sử dụng một số mã phân tích tùy chỉnh để phân tích các tệp YAML