Python yaml 在引号中生成几个值

我yaml在 Python 脚本中使用该模块生成 YAML 文件。下面是一个例子:


import yaml

class MyDumper(yaml.Dumper):


    def increase_indent(self, flow=False, indentless=False):

        return super(MyDumper, self).increase_indent(flow, False)


foo = {

    'instance_type': 'test',

    'hostname': "\"testhost\"",

    'name': 'foo',

    'my_list': [

        {'foo': 'test', 'bar': 'test2'},

        {'foo': 'test3', 'bar': 'test4'}],

    'hello': 'world',

}


print yaml.dump(foo, Dumper=MyDumper, default_flow_style=False)

输出:


hello: world

hostname: '"testhost"'

instance_type: test

my_list:

  - bar: test2

    foo: test

  - bar: test4

    foo: test3

name: foo

在上面的输出主机名值有单引号和双引号,我只想要双引号。


预期输出:


hello: world

hostname: "testhost"

instance_type: test

my_list:

  - bar: test2

    foo: test

  - bar: test4

    foo: test3

name: foo


回首忆惘然
浏览 250回答 3
3回答

12345678_0001

你得到双引号,因为那是你的输入数据。这一行:'hostname': "\"testhost\"",说你想要hosthame一个以 开头和结尾的 10 个字符的字符串作为值",这就是你在 yaml 中看到的。这个带有转义双引号的字符串"\"testhost\""和 yaml 版本'"testhost"'是相同数据的两种不同的源代码表示。如果要在其中嵌入特殊字符(例如\n换行符),则只需要在 yaml 中的字符串周围加上双引号。但yaml.dump()会为你照顾。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python