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

2024-05-19 18:19:20 发布

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

我使用python解析YAML文件。在

其中一个YAML文档包含如下字典:

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

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

我怎么能逃过这一幕? 我研究了另一个SO问题,但解决方法是将字符串包装在“”或 使用

^{pr2}$

或者

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)

但是我收到错误: ScannerError:此处不允许映射值

指向story后的空白。 我一直在尝试下面一位回答者提出的建议,即从python dict创建yaml表达式。这很有效。我把yaml保存到文件中,然后重新加载它,它也能工作。 但是当我通过输入完全相同的字符来创建yaml时,它就不起作用了。。。在

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


Tags: 文件文档编辑yaml字典so表达式article
1条回答
网友
1楼 · 发布于 2024-05-19 18:19:20

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

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

import yaml
print yaml.dump(d, default_flow_style=False)

其结果是:

^{pr2}$

这是正确的YAML表示法,所以如果您遇到问题,问题出在解析器,而不是输入文本。如果使用标准的yaml库,它应该可以很好地解析。在

相关问题 更多 >