python,yaml如何解析包含撇号的字符串
python, yaml how to parse a string containing apostrophe
我正在使用 python 来解析 YAML 文件。
其中一个 YAML 文档包含如下字典:
scrapers:
results: //article[@class='story ']
这显然会导致问题,因为最后一个撇号前面有一个空格。如果我可以删除空格,它将解决问题。但是因为它是一个 xpath 我不能。
有谁知道我怎样才能逃脱那个序列?
我调查了其他 SO 问题,但解决方案是将字符串包装在“”中,或者
使用
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)
但是我收到错误:
ScannerError:此处不允许映射值
指向story
之后的空格。
我一直在尝试下面的回答者提供的建议,即从 python 字典创建 yaml 表达式。这行得通。我将 yaml 保存到文件并再次加载它,它也可以工作。
但是,当我通过键入完全相同的字符来创建 yaml 时,它不起作用...
编辑2:
我认为问题源于我在 window 机器上创建了 yaml 文件并将其上传到 unix 服务器。
很容易找到结构的正确 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 表示形式,所以如果您遇到问题,那是解析器的问题,而不是输入文本的问题。如果您使用标准 yaml
库,它应该可以正常解析。
我正在使用 python 来解析 YAML 文件。
其中一个 YAML 文档包含如下字典:
scrapers:
results: //article[@class='story ']
这显然会导致问题,因为最后一个撇号前面有一个空格。如果我可以删除空格,它将解决问题。但是因为它是一个 xpath 我不能。
有谁知道我怎样才能逃脱那个序列? 我调查了其他 SO 问题,但解决方案是将字符串包装在“”中,或者 使用
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)
但是我收到错误: ScannerError:此处不允许映射值
指向story
之后的空格。
我一直在尝试下面的回答者提供的建议,即从 python 字典创建 yaml 表达式。这行得通。我将 yaml 保存到文件并再次加载它,它也可以工作。
但是,当我通过键入完全相同的字符来创建 yaml 时,它不起作用...
编辑2: 我认为问题源于我在 window 机器上创建了 yaml 文件并将其上传到 unix 服务器。
很容易找到结构的正确 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 表示形式,所以如果您遇到问题,那是解析器的问题,而不是输入文本的问题。如果您使用标准 yaml
库,它应该可以正常解析。