![](/img/trans.png)
[英]How to correctly escape double quote (") inside a json string in Python
[英]Python: How to escape double quote inside json string value?
我在解析python中的json字符串時遇到問題,因為在字符串值中有多余的雙引號,例如{"name": "Jack O"Sullivan", "id": "1"}
我正在嘗試將其轉換為列表,以便進一步評估,如下所示:
import ast
js = '{"name": "Jack O"Sullivan", "id": "1"}'
ast.literal_eval(js).values()
我如何將json字符串更改為類似於"Jack O\\'Sullivan"
,以便對其進行正確評估。
編輯只是為了強調我知道json無效,但這是我所擁有的,並且更改源不是一個選擇。 我目前正在努力解決此限制。
import re
json = '{"name": "Jack O"Sullivan", "id": "1"}'
fixed = re.sub(r'("[\s\w]*)"([\s\w]*")',r"\1\'\2", json)
我懷疑這會工作(在repl.it上的工作示例),它使用以下正則表達式:
("[\s\w]*)"([\s\w]*")
然后用\\'
替換任何內部的"
。只要包含列表有效( [\\s\\w]
),即可以使用,即有效的字符串僅包含空格和單詞字符。您可能需要為更復雜的名稱。
它匹配任何字符串"<alpha/space>"<alpha/space>"
,然后使用捕獲組和反向引用將其替換為"<whatwasbefore>\\'<whatwasafter>"
。
請參閱regex101中的示例
正如我在評論中提到的,替代方法是使其排除json控制字符[^{}:,]
。 這應該會產生相似的結果,但不會遺漏其中包含其他字符的名稱(例如-
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.