[英]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 dict創建yaml表達式。 這可行。 我將yaml保存到文件中,然后再次加載回它,它也可以正常工作。 但是,當我通過鍵入完全相同的字符來創建Yaml時,則它不起作用...
EDIT2:我認為問題源於我在窗口計算機上創建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
庫,則應該可以解析。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.