2016-03-30 60 views
1

刪除數字加引號我有一個Python字符串是這樣的:的Python:如何從字符串

""" 
{id: 'id_0_4', value: '8450223051', name: 'XAD3', parent: 'id_0'}, 
{id: 'id_0_5', value: '509071269', name: 'ABSD', parent: 'id_0'} 
""" 

從字符串,我想刪除周圍value後顯示號碼的單引號。

我該如何編寫一個只檢測這些數字並替換它們周圍引號的正則表達式?

+2

你嘗試使用' int'? – chapelo

+1

這是一個遺憾,這不是合法的JSON,它會使它更簡潔,只是解析,修復和序列化。 – ShadowRanger

+0

我將如何使它合法的JSON。我試過json.dumps,但沒有任何效果 – AbtPst

回答

5

捕獲一組中的數量,重新插入組:

>>> import re 
>>> s = """{id: 'id_0_4', value: '8450223051', name: 'XAD3', parent: 'id_0'}, {id: 'id_0_5', value: '509071269', name: 'ABSD', parent: 'id_0'}""" 
>>> re.sub("'(\d+)'", r'\1', s) 
"{id: 'id_0_4', value: 8450223051, name: 'XAD3', parent: 'id_0'}, {id: 'id_0_5', value: 509071269, name: 'ABSD', parent: 'id_0'}" 

或者,如果這一定是以後的「價值」具體的數字:

>>> re.sub("(value:\s*)'(\d+)'", r'\1\2', s) 
"{id: 'id_0_4', value: 8450223051, name: 'XAD3', parent: 'id_0'}, {id: 'id_0_5', value: 509071269, name: 'ABSD', parent: 'id_0'}" 
+1

@AbtPst注意,雖然這在技術上可以回答你的問題,但我寧願使用一個字符串,你可以'ast.literal_eval'或者加載'json'模塊,然後改變以更穩健的方式得到結果字典的值。所以也許修正你的字符串格式上游。 – timgeb

+0

由於密鑰未被引用,JSON將不起作用。 –

相關問題