python-json-yaml

  1. json 模块
    1. python对象与json互转
    2. json文件读写
  2. yaml 模块
    1. yaml文件读写

json 模块

python对象与json互转

  • json.dumps(): 字典转json
  • json.loads(): json转字典
import json

course = {
    'languages': ['PHP', 'Java', 'Pyton'],
    'book': {
        'Python 入门': {'price': 55.5, 'author': 'Lily', 'available': True, 'repertory': 20, 'date': '2018-02-17'},
        'Java 入门': {'price': 60, 'author': 'Lily', 'available': False, 'repertory': None, 'date': '2018-02-17'}
    }
}

# dumps 方法,将python字典对象转化为json字符串
course_str = json.dumps(course)
print(type(course_str))  # <class 'str'>
print(course_str)        # {"languages": ["PHP", "Java", "Pyton"], "book": {"Python \u5165\u95e8": {"price": 55.5, "author": "Lily", "available": true, "repertory": 20, "date": "2018-02-17"}, "Java \u5165\u95e8": {"price": 60, "author": "Lily", "available": false, "repertory": null, "date": "2018-02-17"}}}

# loads 方法,将json字符串转化为python字典对象
course_dic = json.loads(course_str)
print(type(course_dic))  # <class 'dict'>
print(course_dic)        # {'languages': ['PHP', 'Java', 'Pyton'], 'book': {'Python 入门': {'price': 55.5, 'author': 'Lily', 'available': True, 'repertory': 20, 'date': '2018-02-17'}, 'Java 入门': {'price': 60, 'author': 'Lily', 'available': False, 'repertory': None, 'date': '2018-02-17'}}}

json文件读写

  • json.dump() 写文件
  • json.load() 读文件
import json

course = {
    'languages': ['PHP', 'Java', 'Pyton'],
    'book': {
        'Python 入门': {'price': 55.5, 'author': '李四', 'available': True, 'repertory': 20, 'date': '2018-02-17'},
        'Java 入门': {'price': 60, 'author': '张三', 'available': False, 'repertory': None, 'date': '2018-02-17'}
    }
}

# python字典对象 -> json 文件
# dump 方法将python字典转化为json字符串并写入到文件中
with open("./course.json","w",encoding="utf-8") as f:
    json.dump(course,f)

# json 文件 -> python 字典对象
# load 方法将json字符串文件流转化为python字典对象
with open("./course.json","r",encoding="utf-8") as f:
    data = json.load(f)


print(type(data)) # <class 'dict'>
print(data)       # {'languages': ['PHP', 'Java', 'Pyton'], 'book': {'Python 入门': {'price': 55.5, 'author': '李四', 'available': True, 'repertory': 20, 'date': '2018-02-17'}, 'Java 入门': {'price': 60, 'author': '张三', 'available': False, 'repertory': None, 'date': '2018-02-17'}}}

yaml 模块

pip install pyyaml

yaml文件读写

  • yaml.safe_load(): 读文件
  • yaml.dump(): 写文件
  1. course.yml
# 编程语言
languages:
- PHP
- Java
- Pyton

# 书籍
book:
  Java 入门: # 书籍名称
    author: 张三
    available: false
    date: '2018-02-17'
    price: 60
    repertory: null
  Python 入门:
    author: 李四
    available: true
    date: '2018-02-17'
    price: 55.5
    repertory: 20
  1. py
import yaml

# yaml 文件 -> python 对象
# safe_load 方法读取yaml文件中的内容,转化为python对象
with open("./course.yml","r",encoding="utf-8") as f:
    data = yaml.safe_load(f)


print(type(data)) # <class 'dict'>
print(data) # {'languages': ['PHP', 'Java', 'Pyton'], 'book': {'Java 入门': {'author': '张三', 'available': False, 'date': '2018-02-17', 'price': 60, 'repertory':None}, 'Python 入门': {'author': '李四', 'available': True, 'date': '2018-02-17', 'price': 55.5, 'repertory': 20}}}

# python 对象->yaml 文件
# 用dump 方法把 python 对象转为yaml 文档
with open("./course2.yml","w",encoding="utf-8") as f:
    # 如果写入内容包含中文,allow_unicode=True
    yaml.dump(data,f,allow_unicode=True)

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
My Show My Code