2012-04-03 5 views
0

Я хочу изменить любые None на 'None' (обратите внимание на одинарные кавычки) в файле JSON, который содержит оба значения.заменить подстроку None на «None»

type: None or 
type: 'None' 

Я попытался "s/[']?None[']?/'None'/g", но это не похоже на работу.

ответ

3

Поскольку вы меняете все None к 'None', не было бы проще просто использовать str.replace с этой JSon строки? Я бы запустил это в две процедуры, сначала измените 'None' на None, а затем измените все None на 'None'.

+0

thats, что я делаю прямо сейчас, но я уверен, что регулярное выражение может сделать все за один выстрел – daydreamer

2

Вы можете использовать отрицательное опережения утверждение (?!...):

import re 

test = "type: None or 'None'" 

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

Это будет соответствовать None до тех пор, как он непосредственно не следует '.

→ Regular Expression Syntax ←

+1

Вы также изменения '' 'None''' в ''' 'None'''' –

+0

@He Shiming пардон, я обновил его. –

+0

Ваш второй пример заменяет все, что есть непосредственно перед или после None с символами. Что-то вроде «(1, Нет, 2)» станет «(1'None'2)». Это не может быть проблемой в исходном файле JSON, так как всегда могут быть пробелы вокруг экземпляров None, но я думал, что это стоит упомянуть. –

Смежные вопросы