- 部分 I. Python 入门
- 第 1 章 Python 入门
- 第 2 章 Python Package Index (PyPI)
- 第 3 章 Python 模块
- 第 4 章 数据类型
- 第 5 章 数据结构
- 第 6 章 Class
- 第 7 章 Input/Output
- 第 8 章 Pipe
- 第 9 章 Library
- 9.2. 随机数
- 9.3. Python 多线程
- 9.13. syslog
- 9.5. Socket
- 9.6. subprocess
- 9.7. YAML
- 9.8. Daemon
- 9.9. python-memcached
- 9.10. Pyro - Pyro is short for PYthon Remote Objects
- 9.11. Python Imaging Library
- 9.12. getopt – Command line option parsing
- 9.14. python-subversion
- 9.15. SimpleHTTPServer
- 9.16. fuse-python.x86_64 : Python bindings for FUSE - filesystem in userspace
- 9.17. Network
- 9.18. Python-spdylay - Spdylay Python Extension Module
- 9.19. mechanize
- 9.20. Dominate
- 第 10 章 Frameworks
- 第 12 章 终端环境开发
- 部分 II. Python 数据分析
- 第 13 章 Crawler
- 第 14 章 Scrapy - Python web scraping and crawling framework
- 第 15 章 Pandas - Python Data Analysis Library
- 第 16 章 股票
- 第 17 章 数据可视化
- 部分 III. 人工智能 AI
- 第 18 章 OCR
- 第 19 章 语音处理
- 第 20 章 视频
- 第 21 章 人脸识别
- 第 22 章 自然语言处理
- 第 23 章 自动化运维
- 第 24 章 办公自动化
- 第 25 章 OpenCV
- 第 26 章 图形开发
- 第 27 章 3rdparty toolkit
- 第 29 章 实用代码
- 第 30 章 FAQ
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
9.7. YAML
9.7. YAML
9.7.1. 严格按段落展示 |、|+、|-
|:文中自动换行 + 文末新增一空行 |+:文中自动换行 + 文末新增两空行 |-:文中自动换行 + 文末不新增行
9.7.2. >、>+、>-
>:文中不自动换行 + 文末新增一空行 >+:文中不自动换行 + 文末新增两空行 >-:文中不自动换行 + 文末不新增行
9.7.3. PyYAML
9.7.3.1. 解决 | 问题
import sys import yaml x = u"""\ -----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEA6oySC+8/N9VNpk0gJS7Gk8vn9sYN7FhjpAQnoHRqTN/Oaiyx xk2AleP2vXpojA/DHldT1JO+o3j56AHD+yfNFFeYvgWKDY35g49HsZZhbyCEAB45 ... """ yaml.SafeDumper.org_represent_str = yaml.SafeDumper.represent_str def repr_str(dumper, data): if '\n' in data: return dumper.represent_scalar(u'tag:yaml.org,2002:str', data, style='|') return dumper.org_represent_str(data) yaml.add_representer(str, repr_str, Dumper=yaml.SafeDumper) yaml.safe_dump(dict(a=1, b='hello world', c=x), sys.stdout) print('-'*50) class PSS(str): pass x = PSS("""\ -----BEGIN RSA PRIVATE KEY----- MIIEogIBAAKCAQEA6oySC+8/N9VNpk0gJS7Gk8vn9sYN7FhjpAQnoHRqTN/Oaiyx xk2AleP2vXpojA/DHldT1JO+o3j56AHD+yfNFFeYvgWKDY35g49HsZZhbyCEAB45 ... """) def pss_representer(dumper, data): style = '|' # if sys.versioninfo < (3,) and not isinstance(data, unicode): # data = unicode(data, 'ascii') tag = u'tag:yaml.org,2002:str' return dumper.represent_scalar(tag, data, style=style) yaml.add_representer(PSS, pss_representer, Dumper=yaml.SafeDumper) yaml.safe_dump(dict(a=1, b='hello world', c=x), sys.stdout)
9.7.4. ruamel.yaml
pip install ruamel.yaml
9.7.4.1. 解决 | 问题
from ruamel.yaml import YAML from ruamel.yaml.scalarstring import PreservedScalarString as pss x = pss("""\ external_url 'https://gitlab.example.com' gitlab_rails['time_zone'] = 'Asia/Shanghai' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.aliyun.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "netkiller@msn.com" gitlab_rails['smtp_password'] = "******" gitlab_rails['smtp_domain'] = "aliyun.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = 'netkiller@msn.com' gitlab_rails['gitlab_shell_ssh_port'] = 22 """) yaml = YAML() yaml.dump(dict(a=1, b='hello world', c=x), sys.stdout)
输出结果
a: 1 b: hello world c: | external_url 'https://gitlab.example.com' gitlab_rails['time_zone'] = 'Asia/Shanghai' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.aliyun.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "netkiller@msn.com" gitlab_rails['smtp_password'] = "******" gitlab_rails['smtp_domain'] = "aliyun.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true gitlab_rails['gitlab_email_from'] = 'netkiller@msn.com' gitlab_rails['gitlab_shell_ssh_port'] = 22
9.7.4.2. LiteralScalarString, PreservedScalarString
from ruamel.yaml.scalarstring import LiteralScalarString, PreservedScalarString from ruamel.yaml import YAML import sys yaml = YAML() data = {} data['data'] = PreservedScalarString("""\ 0.0, 1.0 0.1, 1.5 0.2, 1.7 """) data['data_points'] = LiteralScalarString("""\ 0.0, 1.0 0.1, 1.5 0.2, 1.7""") yaml.dump(data, sys.stdout) print("=" * 50) yaml_str = """\ any_value: 123.4 data_points: |2- a b """ data = yaml.load(yaml_str) yaml.dump(data, sys.stdout)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论