29 พฤศจิกายน 2557

Published พฤศจิกายน 29, 2557 by with 0 comment

ใช้รูปแบบข้อมูล YAML ใน Python

บทความนี้จะพาผู้อ่านไปใช้รูปแบบข้อมูล YAML ใน Python กันครับ
YAML คืออะไร
YAML เป็นรูปแบบข้อมูลแบบอนุกรม (data serialization format) ออกแบบให้มนุษย์สามารถอ่านและโต้ตอบได้ด้วยภาษาสคริปต์ มีนามสกุลไฟล์เป็น .yaml, .yml
โดยมีรูปแบบเป็น
object:
    attributes:
        - attr1
        - attr2
        - attr3
    methods: [ getter, setter ]
หากถูกแปลงออกเป็น json จะมีรูปแบบดังนี้
{
  "object": {
    "attributes": [
      "attr1",
      "attr2",
      "attr3"
    ],
    "methods": [
      "getter",
      "setter"
    ]
  }
}
หากถูกแปลงออกมาเป็น python จะมีรูปแบบดังนี้
{'object': {'attributes': ['attr1', 'attr2', 'attr3'],
            'methods': ['getter', 'setter']}}
  จะเห็นได้ว่า เราสามารถเข้าใจรูปแบบข้อมูล YAML ได้ไม่ยากนักและมีระเบียบมากกว่า เมื่อเทียบกับรูปแบบข้อมูลของ json และของ Python เอง
  ในการใช้งานรูปแบบข้อมูล YAML ใน Python นี้ ได้มีนักพัฒนาได้พัฒนาโมดูลที่ชื่อว่า PyYAML ใช้ License: MIT เป็นโมดูลสำหรับไว้แยกวิเคราะห์และ emitter สำหรับ YAML ใน Python
การติดตั้ง PyYAML
ใช้ pip ในการติดตั้งด้วยคำสั่ง
pip install pyyaml
สำหรับบน Windows โหลดไฟล์ติดตั้งได้ที่ PyPI
การใช้งาน PyYAML
ให้ทำการ import yaml เข้ามา
ตัวอย่างที่ 1 แปลงรูปแบบข้อมูล YAML ไปเป็นรูปแบบข้อมูลของ Python
ไฟล์ test.yaml
object:
attributes:
 - attr1
 - attr2
 - attr3
methods:
 - getter
 - setter
ไฟล์คำสั่ง 1.py
import yaml
import pprint
for project in 
yaml.load_all(open('test.yaml')):
    pprint.pprint(project)

เมื่อรัน python 1.py จะได้ผลลัพธ์
{'attributes': ['attr1', 'attr2', 'attr3'],
 'methods': ['getter', 'setter'],
 '๏ปฟobject': None}
ตัวอย่างที่ 2 แปลงกลับไปเป็น YAML ไม่เอารูปแบบ flow
import yaml 
mydata = {'object': {'attributes': ['attr1', 'attr2', 'attr3'],'methods': ['getter', 'setter']}}
print(yaml.dump(mydata))

ผลลัพธ์
object:
  attributes: [attr1, attr2, attr3]
  methods: [getter, setter]
ตัวอย่างที่ 3 แปลงกลับไปเป็น YAML รูปแบบ flow
import yaml 
mydata = {'object': {'attributes': ['attr1', 'attr2', 'attr3'],'methods': ['getter', 'setter']}}
print(yaml.dump(mydata, default_flow_style=False))

ผลลัพธ์
object:
  attributes:
  - attr1
  - attr2
  - attr3
  methods:
  - getter
  - setter

ในการใช้รูปแบบข้อมูล YAML ผู้อ่านสามารถเขียนเองได้ง่าย ๆ หากผู้อ่านต้องการแปลงจาก YAML เป็นรูปแบบข้อมูลแบบ json หรือ python แบบ online ใช้ได้ที่เว็บ http://yaml-online-parser.appspot.com/
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)