!!python/object:\uyu main_yu.ClassName引发异常

2024-04-19 08:29:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个YAML文件:./YAML/simpleData.yml

- name: 'Somu'
  age:  26
  content:
  - name: 'Neo'
    age:  27
    content: []
  - name: 'Ari'
    age:  26
    content: []

我试着用PyYAML来解析它:

^{pr2}$

我是Python新手,因此无法确定我做错了什么,因此引发了此异常:

yaml.constructor.ConstructorError: expected a mapping node, but found sequence
  in "<unicode string>", line 1, column 1:
    !!python/object:__main__.Person
    ^

我怎么解决这个问题?在


完全输出转储:

Attempting Direct Object Load: 
Traceback (most recent call last):
  File "/home/somu/Programming/python/HeadFirstPython/yamlIntro.py", line 106, in <module>
    person_obj = yaml.load("""!!python/object:__main__.Person\n""" + data)
  File "/home/somu/Programming/python/HeadFirstPython/venv/lib/python3.6/site-packages/yaml/__init__.py", line 72, in load
    return loader.get_single_data()
  File "/home/somu/Programming/python/HeadFirstPython/venv/lib/python3.6/site-packages/yaml/constructor.py", line 37, in get_single_data
    return self.construct_document(node)
  File "/home/somu/Programming/python/HeadFirstPython/venv/lib/python3.6/site-packages/yaml/constructor.py", line 46, in construct_document
    for dummy in generator:
  File "/home/somu/Programming/python/HeadFirstPython/venv/lib/python3.6/site-packages/yaml/constructor.py", line 578, in construct_python_object
    state = self.construct_mapping(node, deep=deep)
  File "/home/somu/Programming/python/HeadFirstPython/venv/lib/python3.6/site-packages/yaml/constructor.py", line 204, in construct_mapping
    return super().construct_mapping(node, deep=deep)
  File "/home/somu/Programming/python/HeadFirstPython/venv/lib/python3.6/site-packages/yaml/constructor.py", line 122, in construct_mapping
    node.start_mark)
yaml.constructor.ConstructorError: expected a mapping node, but found sequence
  in "<unicode string>", line 1, column 1:
    !!python/object:__main__.Person
    ^

Process finished with exit code 1

Tags: inpynodeyamlhomevenvlibline
1条回答
网友
1楼 · 发布于 2024-04-19 08:29:00

在文件的根,c.q.顶层,你有一个序列。它的第一个元素是与键值对name:Somu之间的映射。在

如果您想按照您描述的方式使用PyYAML加载此文件,则应该去掉每行的前两个字符:

data += line[2:]

或在第一个破折号后插入!!python/object:__main__.Person

^{pr2}$

相关问题 更多 >