[英]remove single quotes from dict values while adding content to yaml file using python ruamel.yaml
[英]Generate YAML file from python with certain keys and values with double quotes
最近,Ubuntu已开始随netplan一起提供。 它需要yaml配置来设置网络接口。 因此,例如,它需要以下yaml才能设置WiFi:
network:
version: 2
renderer: NetworkManager
wifis:
interface_name:
access-points:
"apn":
password: "pwd"
nameservers:
addresses: [8.8.4.4, 8.8.8.8]
dhcp4: true
请注意,在访问点下,network_ssid_name(apn)和密码字段的值(pwd)用双引号引起来。
我四处查看堆栈溢出,发现了这个
但是,此解决方案需要从pip调用ruamel.yaml安装模块。 我想使用我的python发行版中已经可用的PyYAML模块来实现此目的。
到目前为止,我尝试了一些方法:
import yaml
d = {'network': {'version': 2, 'renderer': 'NetworkManager', 'wifis':{'wlp58s0': {'access-points': {b'apn': {'password': b'pwd'}}}}}}
with open('/home/edyza/result.yml', 'w') as yaml_file:
yaml.dump(d, yaml_file, default_flow_style=False, default_style=None)
这个的输出是
network:
renderer: NetworkManager
version: 2
wifis:
wlp58s0:
access-points:
apn:
password: pwd
现在我尝试使用转义符和其他一些东西,例如
import yaml
d = {'network': {'version': 2, 'renderer': 'NetworkManager', 'wifis':{'wlp58s0': {'"access-points"': {'apn': {'password': "\"pwd\""}}}}}}
with open('/home/edyza/result.yml', 'w') as yaml_file:
yaml.dump(d, yaml_file, default_flow_style=False, default_style=None)
然后输出更改为
network:
renderer: NetworkManager
version: 2
wifis:
wlp58s0:
'"access-points"':
apn:
password: '"pwd"'
在不使用第三方模块的情况下,我可以进行哪些更改以在适当的键和值处用双引号引起期望的输出?
还是我应该考虑生成yaml文件的另一种方法。
在YAML中,除了特殊情况(字符串以特殊字符开头,如果包含控制字符或:<SPACE>
),则不需要用引号引起来。
作为参考,我可以推荐有关YAML报价的文章吗?
我认为netplan YAML解析器不太可能真的需要这些引号。 您是否尝试了不带引号的操作,但收到错误消息?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.