[英]How to manipulate string with escaped quotes
由於存在轉義字符,以下代碼在嘗試將字符串解析為字典時遇到問題,我將舉一個示例:
string = """ {"key" : "value 'others' = \"one \" "} """
json.loads(string)
json無法加載,因為它獲取了以下帶有過多雙引號的字符串:
{"key" : "value 'others' = "one " "}
實際上,我不需要加載json,我可以簡單地執行eval:
ast.literal_eval(string)
到目前為止,很好的問題是我無法使用replace刪除轉義的雙引號字符串(例如:s.replace('\\“','')),因此,存在一些低級字符串操作來實現我想要的功能我想獲得有效的json語法:
{"key" : "value 'others' = one "}
或者能夠使python不刪除反斜杠:
{"key" : "value 'others' = \"one\" "}
正如弗朗索瓦(Francois)所說,這可以通過使用原始字符串來實現:
rawstring = r"my string \""
我的問題與已放置在非原始字符串變量中的字符串有關,因此我需要某種方法將非原始字符串重鑄為原始字符串,以便使用json或ast.literal_eval解析為字典數據結構
引號轉義在這里不起作用:
>>> """ {"key" : "value 'others' = \"one \" "} """
' {"key" : "value \'others\' = "one " "} '
如您所見,反斜杠已被忽略。 您可以使用原始前綴將它們考慮在內:
import json
string = r""" {"key" : "value 'others' = \"one \" "} """
print(json.loads(string))
結果:
{'key': 'value \'others\' = "one " '}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.