python:PyYAML模块未解析为对象

python:PyYAML模块未解析为对象,python,yaml,pyyaml,Python,Yaml,Pyyaml,尝试获取一个YAML文档,将其解析为我可以操作的python dictionary对象。我安装了pip安装pyyaml 令我惊讶的是,它返回的是字符串而不是字典!我做错了什么?空白太多了 >>> import yaml >>> yamlstring = "some: var\nanother: 3" >>> type(yaml.load(yamlstring)) dict 空白太多 >>> import yaml >

尝试获取一个YAML文档,将其解析为我可以操作的python dictionary对象。我安装了pip安装pyyaml

令我惊讶的是,它返回的是字符串而不是字典!我做错了什么?

空白太多了

>>> import yaml
>>> yamlstring = "some: var\nanother: 3"
>>> type(yaml.load(yamlstring))
dict
空白太多

>>> import yaml
>>> yamlstring = "some: var\nanother: 3"
>>> type(yaml.load(yamlstring))
dict

如果您想从YAML字符串生成数据结构,使用三重引号字符串更有意义,以转义换行符开始,以换行符结束。您的示例如下所示:

import yaml
yamlstring = """\
some: var
another: 3
"""
type(yaml.load(yamlstring))
这样就更容易在另一个空间之前发现额外的空间,因为这将缩进YAML结构


如果要在函数中嵌套此操作,从而使前导空格使用textwrap标准库中的dedent删除额外的前导空格。

如果要从YAML字符串生成数据结构,则使用三重引号字符串更有意义,以转义换行符开始,以换行符结束。您的示例如下所示:

>>> import yaml
>>> yamlstring = "some: var\nanother: 3"
>>> type(yaml.load(yamlstring))
dict
import yaml
yamlstring = """\
some: var
another: 3
"""
type(yaml.load(yamlstring))
这样就更容易在另一个空间之前发现额外的空间,因为这将缩进YAML结构


如果要嵌套在函数中执行此操作,从而使前导空格使用textwrap标准库中的dedent删除多余的前导空格。

如何修剪yaml空格?@user299709如果需要修剪,然后你可以使用str.strip-但它真的吗?如何修剪yaml空白?@user299709如果它需要修剪,那么你可以使用str.strip-但它真的吗?让我惊讶的是,你得到了一个str作为输出,而我期望的是一个scanner.Error。至少Python2.7和3.4给出了这一点。您运行的是哪个系统,哪个Python版本。令我惊讶的是,您得到了一个str作为输出,而我期望的是scanner.Error。至少Python2.7和3.4给出了这一点。您运行的是哪个系统,哪个Python版本。这就是yaml字符串的外观选项:\n首选项:\n延迟:1\n使用鼠标:1\n属性:0\n异步:0@user299709在一个元素的dict中,作为4个元素的dict正确加载。我不确定您希望我如何处理该示例。这就是yaml字符串的外观选项:\n首选项:\n延迟:1\n使用鼠标:1\n属性:0\n异步:0@user299709在一个元素的dict中,作为4个元素的dict正确加载。我不知道你想让我用这个例子做什么。
>>> import yaml
>>> yamlstring = "some: var\nanother: 3"
>>> type(yaml.load(yamlstring))
dict