簡體   English   中英

Python:如何在json字符串值內轉義雙引號?

[英]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.

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