使用 ruamel.yaml 打印出单个元素被单引号括起来的列表?
Using ruamel.yaml to print out a list with individual elements singlequoted?
我有一本字典,其中包含一些列表(包含 # 个字符串)。
示例列表:
hosts = ['199.168.1.100:1000', '199.168.1.101:1000']
当我尝试使用 ruamel.yaml 打印出来时,元素显示为
hosts:
- 199.168.1.100:1000
- 199.168.1.101:1000
我希望结果是
hosts:
- '199.168.1.100:1000'
- '199.168.1.101:1000'
所以我遍历了列表并创建了一个新列表,每个元素都是 ruamel SingleQuotedString
S = ruamel.yaml.scalarstring.SingleQuotedScalarString
new_list = []
for e in hosts:
new_list.append(S(e))
hosts = new_list
当我打印出来时,我最终还是打印了没有任何引号的 "hosts" 列表。我在这里做错了什么?
在下文中,我假设您指的是在指示打印时转储到 YAML。
您的方法原则上是正确的,因为使用 "global"
yaml.default_style = "'"
也会得到引用的密钥 hosts
,那不是你想要的
想。也许您没有将 hosts
重新分配给实际的数据结构
你在倾销,因为 hosts
只是你的键值对的值
是倾销。
以下:
import sys
import ruamel.yaml
S = ruamel.yaml.scalarstring.SingleQuotedScalarString
yaml = ruamel.yaml.YAML()
data = dict(hosts = [S(x) for x in ['199.168.1.100:1000', '199.168.1.101:1000']])
yaml.dump(data, sys.stdout)
会毫无问题地给你想要的:
hosts:
- '199.168.1.100:1000'
- '199.168.1.101:1000'
我有一本字典,其中包含一些列表(包含 # 个字符串)。
示例列表:
hosts = ['199.168.1.100:1000', '199.168.1.101:1000']
当我尝试使用 ruamel.yaml 打印出来时,元素显示为
hosts:
- 199.168.1.100:1000
- 199.168.1.101:1000
我希望结果是
hosts:
- '199.168.1.100:1000'
- '199.168.1.101:1000'
所以我遍历了列表并创建了一个新列表,每个元素都是 ruamel SingleQuotedString
S = ruamel.yaml.scalarstring.SingleQuotedScalarString
new_list = []
for e in hosts:
new_list.append(S(e))
hosts = new_list
当我打印出来时,我最终还是打印了没有任何引号的 "hosts" 列表。我在这里做错了什么?
在下文中,我假设您指的是在指示打印时转储到 YAML。
您的方法原则上是正确的,因为使用 "global"
yaml.default_style = "'"
也会得到引用的密钥 hosts
,那不是你想要的
想。也许您没有将 hosts
重新分配给实际的数据结构
你在倾销,因为 hosts
只是你的键值对的值
是倾销。
以下:
import sys
import ruamel.yaml
S = ruamel.yaml.scalarstring.SingleQuotedScalarString
yaml = ruamel.yaml.YAML()
data = dict(hosts = [S(x) for x in ['199.168.1.100:1000', '199.168.1.101:1000']])
yaml.dump(data, sys.stdout)
会毫无问题地给你想要的:
hosts:
- '199.168.1.100:1000'
- '199.168.1.101:1000'