YAML có phải là một mô-đun trong Python không?

YAML Ain't Markup Language [YAML] là ngôn ngữ tuần tự hóa dữ liệu cho hầu hết các ngôn ngữ lập trình. Hãy hiểu chi tiết

YAML một siêu bộ JSON nghiêm ngặt, vì vậy mọi thứ được viết bằng JSON đều có thể được phân tích cú pháp thành YAML. Nó chủ yếu được sử dụng cho các tệp cấu hình trong các dự án và nó cực kỳ dễ hiểu và dễ đọc mã

Phần mở rộng tệp cho các tệp YAML là

Key: Value
integer: 123
float: 123.123
exponential_float: 1340.0
0 hoặc
Key: Value
integer: 123
float: 123.123
exponential_float: 1340.0
1

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về các loại dữ liệu khác nhau có trong YAML và làm việc với YAML trong Python. Đến cuối hướng dẫn này, bạn sẽ có thể hiểu YAML và cú pháp của nó

Tôi cho rằng bạn đã quen thuộc với Python nếu không xem tài nguyên học tập Python

YAML tuân theo cú pháp thụt lề tương tự như Python. Tuy nhiên, nó không cho phép tab [nhớ nó trong khi viết tệp YAML] để thụt đầu dòng

Cài đặt

  • Cài đặt mô-đun Python có tên là
    Key: Value
    integer: 123
    float: 123.123
    exponential_float: 1340.0
    2 để hoạt động với các tệp YAML
pip install pyyaml
  • Sao chép và dán đoạn mã sau vào một tệp và lưu nó với tên
    Key: Value
    integer: 123
    float: 123.123
    exponential_float: 1340.0
    3
import yaml

yaml_file = open["learn_yaml.yaml", 'r']
yaml_content = yaml.load[yaml_file]

print["Key: Value"]
for key, value in yaml_content.items[]:
    print[f"{key}: {value}"]
  • Chúng tôi sẽ sử dụng tập lệnh trên để chuyển đổi mã YAML sang Python và kiểm tra các loại dữ liệu khác nhau
  • Tạo một tệp có tên
    Key: Value
    integer: 123
    float: 123.123
    exponential_float: 1340.0
    4 và thực hành các ví dụ khác nhau trong đó, mà chúng ta sẽ thảo luận trong hướng dẫn này

Không có gì khó chịu, hãy chuyển sang phần kiểu dữ liệu của YAML

Kiểu dữ liệu trong YAML

Mọi thứ trong YAML là một cặp khóa-giá trị

Chúng tôi có một tên khác cho các cặp khóa-giá trị trong các ngôn ngữ lập trình khác nhau như từ điển, hàm băm, đối tượng, v.v. , Đây là những khối xây dựng của YAML

Các khóa có thể là chuỗi [được trích dẫn hoặc bình thường], số float hoặc số nguyên [Hỗ trợ có thể thay đổi trong bản cập nhật trong tương lai]. Và các giá trị có thể thuộc bất kỳ loại dữ liệu nào mà YAML hỗ trợ

Hãy xem các loại dữ liệu khác nhau được trình bày trong YAML

Số

YAML hỗ trợ số nguyên, số thực và số thực theo cấp số nhân

integer: 123
float: 123.123
exponential_float: 1.34e+3

Khi bạn đánh giá đoạn mã trên bằng tập lệnh Python, bạn sẽ nhận được kết quả như sau

Key: Value
integer: 123
float: 123.123
exponential_float: 1340.0

Chúng ta có thể biểu diễn các giá trị trong các hệ thống số khác nhau như thập phân, bát phân và thập lục phân

  • Số không [0] đứng đầu đại diện cho nó là một số bát phân
  • Tiền tố 0x đại diện cho giá trị thập lục phân của nó

Xem ví dụ bên dưới

integer: 123
octal: 0123
hexa: 0x123

Chúng ta có thể thấy các giá trị thập phân đã chuyển đổi của giá trị bát phân và thập lục phân bằng cách chạy tập lệnh Python của mình. Bạn sẽ thấy đầu ra chính xác như sau

Key: Value
integer: 123
octal: 83
hexa: 291

Một điều thú vị khác về YAML là chúng ta có thể đại diện cho NAN [Không phải là số] và Infinity

not_a_number: .NAN
infinity: .inf
negative_infinity: -.inf

Chạy tập lệnh Python, bạn sẽ thấy các giá trị được chuyển đổi của NAN và inf sang Python

Key: Value
not_a_number: nan
infinity: inf
negative_infinity: -inf

Đó là nó cho các loại số trong YAML

Dây

Các chuỗi trong YAML có thể được biểu diễn có hoặc không có dấu ngoặc kép. Cả hai đều giống nhau. Không giống như JSON, không có quy tắc nghiêm ngặt nào để đặt mọi chuỗi trong dấu ngoặc kép. Nhưng, nếu chúng ta cần sử dụng các chuỗi thoát, thì chúng ta phải sử dụng dấu ngoặc kép

Hãy xem một số ví dụ về chuỗi

string: Hi, there I am a string
string with escape character: Hi, I am a newline \n character. And I am not working :[
string with working escape character: "Hi, I am a newline \n character. And I am working :]"

Ký tự dòng mới trong phần cặp khóa-giá trị hoạt động như mong đợi. Như chúng tôi đã nói, chúng tôi cần sử dụng dấu ngoặc kép để làm việc với chuỗi thoát

Chúng tôi đã sử dụng dấu ngoặc kép trong cặp khóa-giá trị tiếp theo và nó hoạt động như mong đợi. Diễn giải mã YAML ở trên bằng tập lệnh Python của chúng tôi. Bạn sẽ nhận được kết quả như sau

Key: Value
string: Hi, there I am a string
string with escape character: Hi, I am a newline \n character. And I am not working :[
string with working escape character: Hi, I am a newline 
character. And I am working :]

Có hai ký tự đặc biệt trong YAML mà chúng ta có thể sử dụng để viết nhiều câu làm giá trị cho khóa. Giả sử chúng ta phải chia một câu dài thành nhiều dòng. Trong loại kịch bản này, chúng ta có thể sử dụng một nếp gấp [lớn hơn >] hoặc khối [đường ống. ] ký tự để viết nhiều dòng

Sự khác biệt giữa các ký tự gấp và khối là gì?

Ký tự gấp sẽ không diễn giải các dòng mới, trong khi ký tự khối thì có

Hãy xem các ví dụ

import yaml

yaml_file = open["learn_yaml.yaml", 'r']
yaml_content = yaml.load[yaml_file]

print["Key: Value"]
for key, value in yaml_content.items[]:
    print[f"{key}: {value}"]
0

Chạy script Python thì bạn sẽ thấy sự khác biệt giữa ký tự fold và block. Và đừng quên sử dụng thụt đầu dòng

import yaml

yaml_file = open["learn_yaml.yaml", 'r']
yaml_content = yaml.load[yaml_file]

print["Key: Value"]
for key, value in yaml_content.items[]:
    print[f"{key}: {value}"]
1

Booleans

Trong YAML, chúng ta có thể biểu diễn giá trị boolean Đúng và Sai theo ba cách khác nhau. Nhìn họ kìa

  • Các giá trị True, On và Yes được coi là True trong YAML
  • Các giá trị Sai, Tắt và Không được coi là Sai trong YAML
import yaml

yaml_file = open["learn_yaml.yaml", 'r']
yaml_content = yaml.load[yaml_file]

print["Key: Value"]
for key, value in yaml_content.items[]:
    print[f"{key}: {value}"]
2

Nếu bạn diễn giải mã YAML ở trên, thì bạn sẽ nhận được 3 giá trị khóa đầu tiên là True và 3 giá trị khóa tiếp theo là Sai

import yaml

yaml_file = open["learn_yaml.yaml", 'r']
yaml_content = yaml.load[yaml_file]

print["Key: Value"]
for key, value in yaml_content.items[]:
    print[f"{key}: {value}"]
3

Vô giá trị

YAML hỗ trợ giá trị null tương tự như JSON. Chúng ta có thể sử dụng từ khóa null hoặc ký hiệu dấu ngã [~] để xác định giá trị null trong YAML. YAML có các lựa chọn thay thế khá phải không?

import yaml

yaml_file = open["learn_yaml.yaml", 'r']
yaml_content = yaml.load[yaml_file]

print["Key: Value"]
for key, value in yaml_content.items[]:
    print[f"{key}: {value}"]
4

Chạy tập lệnh Python. Bạn sẽ nhận được cả hai giá trị là Không vì Python sử dụng Không thay vì từ khóa null

import yaml

yaml_file = open["learn_yaml.yaml", 'r']
yaml_content = yaml.load[yaml_file]

print["Key: Value"]
for key, value in yaml_content.items[]:
    print[f"{key}: {value}"]
5

Mảng

Chúng ta có thể chỉ định các mảng tương tự như Python trong YAML. Hoặc chúng ta có thể viết tất cả các phần tử của mảng trong các dòng riêng biệt trước dấu gạch nối [-]. Hãy xem một ví dụ cho mỗi đại diện

import yaml

yaml_file = open["learn_yaml.yaml", 'r']
yaml_content = yaml.load[yaml_file]

print["Key: Value"]
for key, value in yaml_content.items[]:
    print[f"{key}: {value}"]
6

Trong mã YAML ở trên, chúng tôi đã sử dụng dấu ngoặc vuông tương tự như danh sách Python. Hãy xem một cách khác để biểu diễn mảng trong YAML [trông giống như danh sách đánh dấu]

import yaml

yaml_file = open["learn_yaml.yaml", 'r']
yaml_content = yaml.load[yaml_file]

print["Key: Value"]
for key, value in yaml_content.items[]:
    print[f"{key}: {value}"]
7

Nếu bạn sử dụng tập lệnh Python của chúng tôi để diễn giải các ví dụ trên. Bạn sẽ nhận được đầu ra như sau

import yaml

yaml_file = open["learn_yaml.yaml", 'r']
yaml_content = yaml.load[yaml_file]

print["Key: Value"]
for key, value in yaml_content.items[]:
    print[f"{key}: {value}"]
6

Chúng tôi có thể có từ điển trong danh sách không chỉ chuỗi, số, v.v. ,

import yaml

yaml_file = open["learn_yaml.yaml", 'r']
yaml_content = yaml.load[yaml_file]

print["Key: Value"]
for key, value in yaml_content.items[]:
    print[f"{key}: {value}"]
9

Bạn sẽ nhận được một loạt các từ điển nếu bạn diễn giải mã YAML ở trên bằng tập lệnh Python của chúng tôi

integer: 123
float: 123.123
exponential_float: 1.34e+3
0

từ điển

Chúng ta đã thấy cú pháp của từ điển trong các ví dụ trên. Để nhanh chóng tóm tắt từ điển là các cặp khóa-giá trị. Chúng tôi có thể có bất kỳ loại dữ liệu hợp lệ nào làm giá trị cho khóa. YAML thậm chí còn hỗ trợ các từ điển lồng nhau

Hãy xem một ví dụ

integer: 123
float: 123.123
exponential_float: 1.34e+3
1

Diễn giải đoạn code trên bạn sẽ thấy kết quả tương tự như sau

integer: 123
float: 123.123
exponential_float: 1.34e+3
2

Bạn có biết bạn có thể chuyển đổi danh sách thành từ điển trong Python không?

Bố trí

YAML hỗ trợ một loại dữ liệu khác được gọi là tập hợp. Tập hợp chứa các giá trị duy nhất tương tự như kiểu dữ liệu tập hợp của Pythons. Các mục của tập hợp được đặt trước dấu chấm hỏi [?] giống như các mục danh sách được đặt trước dấu gạch nối [-]

Chúng ta cần đề cập rằng kiểu dữ liệu được đặt bằng cách sử dụng. đặt sau tên đặt

Nhìn vào ví dụ sau

integer: 123
float: 123.123
exponential_float: 1.34e+3
3

Vì tập hợp chỉ chứa các giá trị duy nhất, bạn sẽ không nhận được 2 hai lần khi diễn giải mã YAML ở trên bằng tập lệnh Python của chúng tôi

Hãy xem kết quả

integer: 123
float: 123.123
exponential_float: 1.34e+3
4

Ta cũng có thể biểu diễn tập hợp tương tự như cú pháp Python như sau

integer: 123
float: 123.123
exponential_float: 1.34e+3
5

Bạn sẽ nhận được kết quả chính xác như ví dụ trên

Đó là nó cho các loại dữ liệu trong YAML. Hãy xem một số tính năng bổ sung trong YAML

YAML hỗ trợ bình luận. Thật tuyệt vời. Chúng tôi có thể viết nhận xét trong YAML bắt đầu bằng ký hiệu băm [#]

integer: 123
float: 123.123
exponential_float: 1.34e+3
6

Nếu bạn diễn giải mã YAML ở trên, thì bạn sẽ nhận được một khóa trống có giá trị null

integer: 123
float: 123.123
exponential_float: 1.34e+3
7

YAML không hỗ trợ nhận xét nhiều dòng. Chúng tôi phải viết nhiều dòng bắt đầu bằng một hàm băm cho các nhận xét nhiều dòng tương tự như Python

mỏ neo

Các neo cho phép chúng tôi sao chép nội dung của một khóa bất cứ nơi nào chúng tôi muốn trong toàn bộ tài liệu. Điều này rất tiện lợi nếu bạn muốn sao chép một số nội dung trong tài liệu

Để sử dụng anchor chúng ta phải đặt tên cho nó như một tên biến trong các ngôn ngữ lập trình. Và sau đó chúng tôi có thể sử dụng nó trên tài liệu bất cứ nơi nào chúng tôi muốn

Chúng ta có thể xác định tên neo bằng cách sử dụng & và sử dụng nó với *. Hãy xem một ví dụ

integer: 123
float: 123.123
exponential_float: 1.34e+3
8

Trong ví dụ trên, chúng tôi đã sử dụng một ký tự trùng lặp dữ liệu để sao chép giá trị của khóa dữ liệu. Cả hai khóa đều chứa các giá trị giống nhau nếu bạn diễn giải YAML ở trên

integer: 123
float: 123.123
exponential_float: 1.34e+3
9

Phần kết luận

Tôi hy vọng bạn đã hiểu rõ về YAML. Bây giờ, bạn có thể sử dụng YAML trong tệp cấu hình dự án tiếp theo của mình. Bạn có thể tham khảo trang web chính thức của YAML để có được những thứ nâng cao hơn

YAML có được bao gồm trong Python không?

Tuy nhiên, cũng có một số nhược điểm khi sử dụng YAML với Python. YAML không phải là một phần của thư viện Python chuẩn , trong khi XML và JSON là.

Làm cách nào để nhập mô-đun YAML bằng Python?

Câu trả lời của bạn .
Bạn có thể thử tính năng tìm kiếm trong pip. $ pip tìm kiếm yaml. .
Bây giờ bạn đã biết một tên gói cụ thể, bạn có thể cài đặt nó. $ pip cài đặt pyyaml

YAML có giống với Python không?

Python được đánh giá cao nhất nhờ cú pháp tao nhã và mã dễ đọc, nếu bạn mới bắt đầu sự nghiệp lập trình thì python phù hợp nhất với bạn. Mặt khác, YAML được mô tả chi tiết là "Định dạng tuần tự hóa dữ liệu có thể phân tích cú pháp máy đơn giản được thiết kế để con người có thể đọc và tương tác" .

PyYAML có giống với YAML không?

YAML là định dạng tuần tự hóa dữ liệu được thiết kế để con người có thể đọc được và tương tác với các ngôn ngữ kịch bản. PyYAML là trình phân tích cú pháp YAML và trình phát cho Python . PyYAML có YAML 1 hoàn chỉnh. 1, hỗ trợ Unicode, hỗ trợ dưa chua, API mở rộng có khả năng và thông báo lỗi hợp lý.

Chủ Đề