XML,JSON,YAML,Jinjia2是人机交互的语言
XML:eXtensible Markup Language: 可扩展标记语言
XML是一个框架语言,用于帮助使用者定义标签,其标记基于<>。
其中任何语法和标记都要有对应的关闭动作,比如<p>必须要对应</p> 例如:
<p> This is a example. </p>
<Location>
<Country>UK</Country>
<City>London</City>
<Street/>
</Location>
在XML里,区分大小写。
在使用python的过程中,可以导入XML模块
axing@axing-rock:~$ pip3 install xmltodict
Collecting xmltodict
Downloading https://files.pythonhosted.org/packages/42/a9/7e99652c6bc619d19d58cdd8c47560730eb5825d43a7e25db2e1d776ceb7/xmltodict-0.11.0-py2.py3-none-any.whl
Installing collected packages: xmltodict
Successfully installed xmltodict-0.11.0
axing@axing-rock:~$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import xmltodict
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'xmltodict']
>>>
XML在python里主要用于传输数据。
JSON: JavaScript Object Notation, JavaScript 对象表示法
JSON和Python的字典很像,但是Python的字典类型是字典,而JSON则是字符串。
>>> import json
>>> dir()
['OrderedDict', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'json', 'xml_to_dict', 'xmltodict']
>>> mylocation = {'Location':{'Country':'China','City':'Hefei','Street':None}}
>>> mylocation
{'Location': {'Country': 'China', 'City': 'Hefei', 'Street': None}}
>>> type(mylocation)
<class 'dict'>
>>> mylocation_json = json.dumps(mylocation)
>>> mylocation_json
'{"Location": {"Country": "China", "City": "Hefei", "Street": null}}'
>>> type(mylocation_json)
<class 'str'>
>>>
看到区别了吗,双引号和单引号,数据类型。
Python的字典是一个数据结构,运行在内存里存储和处理数据,但在退出python后就消失了。而JSON就可以把Python的字典编程字符串存储到硬盘或传递到远端,需要的时候再转换成字典。
>>> mylocation_dict = json.loads(mylocation_json)
>>> mylocation_dict
{'Location': {'Country': 'China', 'City': 'Hefei', 'Street': None}}
>>>
json.dump 和 json.dumps
json.load 和 json.loads
加不加s的区别在于,不加s需要和文件结合,比如转换后存入文件。加了s则是在内存里进行转换。
YAML: YAML Ain't Markup Language YAML不是标识语言
这个有意思。YAML是用来解决复杂的JSON数据格式。
比如你看json:
{"test1":{"sum":300,"avg":50,"values":[45,76,90]},"test2":{"sum":400,"avg":70,"values":[88,40,120]}}
很不利于人类阅读:)
而YAML就很方便理解,举例一下:
JSON:
{"name":"Zhangsan","age":34,"children":[{"name":"zhangbaobao","age":2},{"name":"zhanghua","age":5}]}
YAML:
---
name: Zhangsan
age: 34
children:
- name: zhangbaobao
age: 2
- name: zhanghua
age: 5
#是不是很清晰?
那么,看一下列表和字典都在YAML里怎么表达:
。。。 未完待续