簡體   English   中英

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 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM