代码之家  ›  专栏  ›  技术社区  ›  jim jarnac

python,yaml如何解析包含撇号的字符串

  •  0
  • jim jarnac  · 技术社区  · 7 年前

    我正在使用python解析YAML文件。

    其中一个YAML文档包含以下词典:

    scrapers:
        results: //article[@class='story ']
    

    这显然会引起问题,因为最后一个撇号前面有一个空格。如果我能去掉空白,问题就解决了。然而,因为它是xpath,所以我不能。

    有人知道我怎么能逃脱那个序列吗? 使用

    scrapers:
      results: //article[@class='story ']
    

    scrapers:>
      results: //article[@class='story ']
    

    scrapers:
      results: //article[@class='story '']
    

    不起作用。

    编辑: 我试图打开一个包含上述表达式的文件:

    import yaml
    with open('/home/depot/wintergreen/yaml/scrapers.yml', 'r') as f:
        scrapers = yaml.load(f)
    

    但是,我收到错误:

    指向后面的空白 story 我一直在尝试下面回答者提供的一个建议,即从python dict创建yaml表达式。这很有效。我将yaml保存到文件并再次加载,它也可以工作。 然而,当我通过键入完全相同的字符来创建yaml时,它就不起作用了。。。

    编辑2: 我认为问题的根源是我在一台Windows机器上创建了yaml文件,并将其上传到unix服务器上。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Chris Johnson user3351229    7 年前

    很容易找到结构的正确YAML格式:用Python创建结构,然后使用 yaml.dump 要创建YAML编码字符串:

    d = {'scrapers': {'results': "//article[@class='story ']"}}
    print d
    
    import yaml
    print yaml.dump(d, default_flow_style=False)
    

    其结果是:

    {'scrapers': {'results': "//article[@class='story '"}}
    
    scrapers:
        results: //article[@class='story ']
    

    yaml 它应该可以解析库。