Python3如何操作YAML文件格式

  介绍

小编这次要给大家分享的是Python3如何操作YAML文件格式,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。

<强>数据及配置文件之争

数据及文件通常有三种类型:

    <李>配置文件型:如ini,相依,属性文件,适合存储简单变量和配置项,最多支持两层,不适合存储多层嵌套数据李 <李>表格矩阵型:如csv、excel等,适合于存储大量同类数据,不适合存储层级结构的数据李 <李>多层嵌套型:如XML、HTMl、JSON、YAML, TOML等,适合存储单条或少数多层嵌套数据,不适合存储大量数据
      李,

YAML兼容JSON格式,简洁,强大,灵活,可以很方便的构造层级数据并快速转为Python中的字典。

<强> YAML简介

YAML (YAML ain # 39; t标记语言)即一种反标记(XML)语言。强调数据为中心,而非标记.YAML大小写敏感,使用缩进代表层级关系。

YAML中支持对象对象(对Python中应的字典),数组数组(对Python中应的列表)以及常量(字符串,数字(int/浮动),真/假/零)。

相比于JSON格式,YAML免除了双引号,逗号,大括号,中括号等,(当然也支持原始的JSON格式),并且支持注释,类型转换,跨行,锚点,引用及插入等等。

<>强基本格式

    <李>对象:使用键:值表示,冒号后面有一个空格,也可以是使用{键:值}(流流格式)或{“key":“value"}表示李 <>李数组:使用——价值表示,——后面有一个空格,每项一行,也可以使用[value1, value2, value3,…](流流格式)或“value1",“value2",“value3",…]李 <>李字符串:美国广播公司(abc)或“abc"李 <>李数字:123或123.45 <李>真/假:真/假,真/假,真/假或开/关,> #注释:示例yaml文件   名称:仙人掌   年龄:18   技能:   -   Python -   - 3   -   ——Java   - 5   has_blog:真   女友:~

    相当于以下JSON格式

    {   “name":“Cactus"   “age": 18,   “skills":(   (   “Python",   3.   ],   (   “Java",   5   ]   ],   “has_blog":没错,   “gf":零   }

    <>强类型转换

    使用! !str, ! !浮动等可以将默认类型转为指定类型,如

      <李> - - - - - - ! !李李浮动3 <> - - - - - - ! !李李str 4 <> - - - - - - ! !str真正
        李,

    对应JSON格式

    (   3.0,   “4“,   “true"   )

    多行文本及拼接

      <李> |保留多行文本(保留换行符) <李>比;将多行拼接为一行

    示例:

    答:|

    喜欢你

    b:在

    不喜欢你

    才怪对应JSON格式

    {   “a":“我\ n喜欢你\ n",   “b":“我不喜欢你才怪,   }

    <>强锚点,引用及插入

    在-或:后加上,锚点名为当前字段建立锚点、下面可使用*锚点名引用锚点,或使用& lt; & lt;: *锚点名直接将锚点数据插入到当前的数据中,示例如下:

    用户:   ——和z   名称:张三   密码:! !str 123456   ——和ls   名字:李四   密码:英语字母      case1:   登录:* z      例2:   用户:   & lt; & lt;: * ls   年龄:20

    对应JSON格式:

    {   “users":(   {   “name":“张三“,   “password":“123456”;   },   {   “name":“李四“,   “password":“abcdefg"   }   ],   “case1": {   “login": {   “name":“张三“,   “password":“123456”;   }   },   “case2": {   “user": {   “name":“李四“,   “password":“abcdefg"   “age": 20   }   }   }

    <>强Python操作YAML文件及字符串

    需要安装pyyaml, pip安装pyyaml

    和JSON文件类似,YAML也提供负载和转储两种方法。

      <李> yaml.load()或yaml.safe_load (YAML字符串或文件句柄):YAML→字典,如yaml中有中文,需要使用字符串.encode (& # 39; utf - 8 # 39;)或打开文件时指定编码=& # 39;utf - 8 # 39;李 <>李yaml.dump(字典):默认为流流格式,即字典{b # 39;: {& # 39; c # 39;: 3 & # 39; d # 39;: 4}},会被转为b: {c: 3 d: 4}形式,可以使用default_flow_style=False关闭流模式

    由于yaml.load()支持原生Python对象,不安全,建议使用yaml.safe_load ()

    Python3如何操作YAML文件格式