2012-04-03 56 views
0

我想在包含兩者的JSON文件中將任何None更改爲'None'(注意單引號)。將子字符串替換爲'無'

type: None or 
type: 'None' 

我試過"s/[']?None[']?/'None'/g"但它似乎沒有工作。只要它不直接後跟一個'

import re 

test = "type: None or 'None'" 

result = re.sub(r"None(?!')", r"'None'", test) 

這將匹配None

回答

3

既然你正在改變所有None'None',那豈不是更容易,只需使用str.replace與JSON字符串?我會在兩個步驟中運行它,首先將'None'更改爲None,然後將所有None更改爲'None'

+0

這就是我現在正在做的,但我相信正則表達式可以做到一切 – daydreamer 2012-04-03 23:08:03

2

你可以使用一個負前向斷言(?!...)

→ Regular Expression Syntax ←

+1

你也在改''''''到'''''''''' – 2012-04-03 23:05:33

+0

@何世明對不起,我已經更新了。 – 2012-04-03 23:11:38

+0

你的第二個例子將None之前或之後的任何內容替換爲'characters'。像「(1,無,2)」會變成「(1'None'2)」。這可能不是原始JSON文件中的問題,因爲可能總是會出現無空格的情況,但我認爲這是值得一提的。 – 2012-04-04 00:01:47

0
s/([^'])?(None)([^'])?/$1'$2'$3/g