parse(stream)
由于在yaml与其他对象互相转化的过程中,yaml是要经过若干个逻辑阶段,所以yaml中有events
和tokens
序列的概念。
parse
对给定的yaml stream,生成一个events序列。
stream: 字符流或者文件流
document = """
---
block sequence:
- BlockEntryToken
block mapping:
? KeyToken
: ValueToken
flow sequence: [FlowEntryToken, FlowEntryToken]
flow mapping: {KeyToken: ValueToken}
anchors and tags:
- &A !!int '5'
- *A
...
"""
# yaml.parse()
import yaml
for event in yaml.parse(document):
print(event)
output
StreamStartEvent()
DocumentStartEvent()
MappingStartEvent(anchor=None, tag=None, implicit=True)
ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'block sequence')
SequenceStartEvent(anchor=None, tag=None, implicit=True)
ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'BlockEntryToken')
SequenceEndEvent()
ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'block mapping')
MappingStartEvent(anchor=None, tag=None, implicit=True)
ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'KeyToken')
ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'ValueToken')
MappingEndEvent()
ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'flow sequence')
SequenceStartEvent(anchor=None, tag=None, implicit=True)
ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'FlowEntryToken')
ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'FlowEntryToken')
SequenceEndEvent()
ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'flow mapping')
MappingStartEvent(anchor=None, tag=None, implicit=True)
ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'KeyToken')
ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'ValueToken')
MappingEndEvent()
ScalarEvent(anchor=None, tag=None, implicit=(True, False), value=u'anchors and tags')
SequenceStartEvent(anchor=None, tag=None, implicit=True)
ScalarEvent(anchor=u'A', tag=u'tag:yaml.org,2002:int', implicit=(False, False), value=u'5')
AliasEvent(anchor=u'A')
SequenceEndEvent()
MappingEndEvent()
DocumentEndEvent()
StreamEndEvent()