代码之家  ›  专栏  ›  技术社区  ›  Vasu Mistry

如何用字符串值解析yaml文件

  •  0
  • Vasu Mistry  · 技术社区  · 2 年前

    对于下面的示例,我试图读取这个yaml文件,解析它并在 data 标记到新的yaml文件。使用 yaml.load() 我无法区分字符串和int值。

    data:
        key1: "Value1"
        key2: Value2
    

    我当前正在解析python代码:

    import io
    import yaml
    
    test_dict={}
    with open("sample-string.yaml", "r") as stream:
        try:
            f = yaml.load(stream)
            test_dict['data'] = f['data']
        except yaml.YAMLError as exc:
            print(exc)
    
    with io.open("output.yaml", "a",encoding="utf-8") as wf:
        try:
            yaml.dump(test_dict['data'],wf,allow_unicode=True,default_flow_style=False)
        except yaml.YAMLError as exc:
            print(exc)
    

    key1: Value1
    key2: Value2
    

    如您所见,的值缺少引号 key1 i、 e.应该是 "Value1" 而不是 Value1 . 关于如何实现这一点,有什么建议吗?

    预期输出

    key1: "Value1"
    key2: Value2
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Adam Smith    2 年前

    报价是数据的一部分,还是仅仅是数据的表示?如果它是数据的一部分,则必须在yaml中指出。

    data:
        key1: |
            "Value1"
        key2: Value2
    

    请注意,在yaml字符串值上,封闭引号是可选的,这意味着如果它们要成为字符串数据本身的一部分,则必须显式包含它们。

    # these two documents are identical
    data:
    - this
    - that
    - the other
    ---
    data:
    - "this"
    - "that"
    - "the other"