python yaml 文件解析及str、repr函数的说明

记录说明 yaml 文件解析的方法及str、repr函数的区别

1. yaml 文件解析

config.yml

site_name: AJPy
pages:
  - Introduction: index.md
  - AJP overview: ajp.md
theme: readthedocs
code: 中文

解析yaml 文件

import yaml
import os

class OperateYaml(object):
    """
    操作yaml 文件
    """
    def __init__(self):
        pass

    def load_yaml_file(self, yaml_file_path):
        """
        加载 yaml 文件
        :param yaml_file_path:
        :return:
        """
        if not os.path.exists(yaml_file_path):
            print 'yaml file is not exist.'
            return
        if not os.path.splitext(yaml_file_path)[-1] == '.yml':
            print 'input file is not a yaml file'
            return
        with open(yaml_file_path) as fp:
            result = yaml.load(fp)
            # TODO 若yml 文件中含有中文, 使用以下方法进行转换
            result = repr(result).decode('unicode_escape')
        return result

    def write_dict_to_yaml_file(self, a_dict, output_path):
        """
        将字典内容序列化到 yaml 文件中
        :param a_dict:   待序列化的字典
        :param output_path:  输出文件路径
        :return:
        """
        if not isinstance(a_dict, dict):
            print 'must be input a dict.'
            return
        if not os.path.exists(output_path):
            os.makedirs(output_path)
        output_file_path = os.path.join(output_path, 'temp.yml')
        # 使用'a' ,当文件不存在时,创建一个新文件
        with open(output_file_path, 'a') as fp:
            yaml.dump(a_dict, fp, indent=4)

if __name__ == '__main__':
    oy = OperateYaml()
    # {'theme': 'readthedocs', 'code': u'中文', 'site_name': 'AJPy', 'pages': [{'Introduction': 'index.md'}, {'AJP overview': 'ajp.md'}]}
    print oy.load_yaml_file('config.yml')

    a_dict = {'topic': 'python', 'foo': ['foo1', 'foo2', 'foo3'], 'bar': {'bar1': 'value1', 'bar2': 'value2'}}
    oy.write_dict_to_yaml_file(a_dict, './result')

2. str() 和 repr() 函数的区别说明

Python 中将某一类型的 变量 或者 常量 转换为字符串对象通常有两种方法,str() 或者 repr().

  • str() 和 repr() 两个函数的 相同点 在于,都可以将任意的值转化为字符串
  • str() 和 repr() 的不同点在于:
    • 函数str()将其转化成为适于人阅读的前端样式文本, 输出追求可读性,输出格式要便于理解,适合用于输出内容到用户终端
    • repr(object)就是原本未处理的用于编译器阅读的后台底层代码, 输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用
>>> print(str('123'))
123
>>> print(str(123))
123
>>> print(repr('123'))
'123'
>>> print(repr(123))
123   
当把一个字符串传给str()函数再打印到终端的时候,输出的字符不带引号
而将一个字符串传给repr()函数再打印到终端的时候,输出的字符带有引号
>>> from datetime import datetime
>>> now = datetime.now()
>>> print(str(now))
2020-02-22 15:41:33.012917
>>> print(repr(now))
datetime.datetime(2020, 2, 22, 15, 41, 33, 12917)
通过str()的输出结果能知道 now 实例的内容,但是却丢失了 now 实例的数据类型信息。
通过repr()的输出结果不仅能获得 now 实例的内容,还能知道 now 是datetime.datetime对象的实例

原文地址:https://www.cnblogs.com/gaozhidao/p/12350054.html

时间: 2024-10-22 16:25:02

python yaml 文件解析及str、repr函数的说明的相关文章

YAML文件解析

YAML是“另一种标记语言”的外语缩写,YAML 是一种比JSON(json多层次{ 与 [ 会被搞晕的)更直观的表现形式,展示上更易查错和关系描述.因为不需要一个专业工具就可以排查正确性.YAML目前有多种语言提供了支持. JAVA最终是要被序列化或反序列化,Jackson 提供了YAMLFactory.,可以方便解析YAML,并且可以无缝结合ObjectMapper.对原有系统改动最小. Maven 引用以下包 <dependency> <groupId>com.fasterx

python xml文件解析 及生成xml文件

#解析一个database的xml文件 """ <databaselist type="database config"> <database> <host>localhost</host> <username>root</username> <password>11111</password> <datasename>wulaoshi</da

python基础(文件输入/输出 内建类型 字典操作使用方法)

本文主要介绍了python基础入门,包括文件输入/输出.内建类型.字典操作等使用方法 一.变量和表达式 代码如下: >>> 1 + 1 2>>> print 'hello world' hello world>>> x = 1               >>> y = 2>>> x + y3 Python是强类型语言,无法根据上下文自动解析转换成合适的类型. Python是一种动态语言,在程序运行过程中,同一个变量

20.python的文件处理

我们日常在处理文件的时候一般都遵循这样的逻辑:打开文件,操作文件,保存关闭文件. 但在python中,又分为以下几步:创建文件对象,对文件对象进行操作(读入,写入之类的),关闭文件. 由于文件操作在python2.x和python3.x中区别还是比较大的,3.x可以接受更多的参数. 所以在此说明:以下内容都是针对python2.x而言的,准确来说是python2.7. 下面来逐一分析: 1.创建文件对象 创建文件对象的方法有两种,第一张是使用工厂函数 file(name[, mode[, buf

Python中str()与repr()函数的区别

在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即str()或者 repr() . >>> a = 10 >>> type(str(a)) <class 'str'> >>> type(repr(a)) <class 'str'> 但是这二者之间有什么区别呢?因为提供两个功能完全相同的内建函数是没有意义的.先看一个例子. >>> print(str('123')) 123 >

Python中str()与repr()函数的区别——repr() 的输出追求明确性,除了对象内容,还需要展示出对象的数据类型信息,适合开发和调试阶段使用

Python中str()与repr()函数的区别 from:https://www.jianshu.com/p/2a41315ca47e 在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即 str()或者 repr() . >>> a = 10 >>> type(str(a)) <class 'str'> >>> type(repr(a)) <class 'str'> 但是这二者之间有什么区别呢?因

python解析yaml文件

YAML语法规则: http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/ 下载PyYAML: http://www.yaml.org/ 解压安装: python setup.py install 1.新建test.yaml文件,内容如下: name: Tom Smith age: 37 spouse: name: Jane Smith age: 25 children: - name: Jimmy Smith age: 15 - nam

Python中的repr()函数

Python 有办法将任意值转为字符串:将它传入repr() 或str() 函数. 函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式. 在python的官方API中这样解释repr()函数: repr()函数得到的字符串通常可以用来重新获得该对象,repr()的输入对python比较友好.通常情况下obj==eval(repr(obj))这个等式是成立的. >>> obj='I love Python' >>> obj==eval

python cookboo 文件与IO 函数

写出文本数据 g = open('test.txt', 'rt', newline='',encoding = 'utf-8', errors='replace') t是windows平台特有的所谓text mode(文本模式),区别在于会自动识别windows平台的换行符.类Unix平台的换行符是\n,而windows平台用的是\r\n两个ASCII字符来表示换行,python内部采用的是\n来表示换行符.rt模式下,python在读取文本时会自动把\r\n转换成\n.wt模式下,Python