Во-первых, вам не нужно избегать двойных кавычек внутри одинарных кавычек. Я имею в виду, используйте это вместо:
origLine = '"myData":"'+origData +'",'
Тогда более простой способ сделать замену - заменить содержимое файла целиком, а не читать построчно:
with open("myBlock.json", "r") as fh:
oldcontent = fh.read()
if origLine in oldcontent:
print("found!!")
newcontent = oldcontent.replace(origLine, newLine)
with open("newfile.json", "w") as fh:
fh.write(newcontent)
Но это не гарантируется! Я поместил if
в первый блок with
, чтобы помочь вам проверить, действительно ли существует то, что вы ожидаете. Скорее всего, входной JSON может содержать пробелы вокруг двоеточия, например "myData": "foobar"
, или даже новые строки рядом с двоеточием. Это все законные JSON. Вот почему кто-то в комментарии предложил вам прочитать JSON, изменить его и записать обратно JSON.
Если вы думаете, что возвращение JSON испортит формат, попробуйте
newcontent = json.dumps(modified_data, indent=4)
indent=4
"красиво напечатает" ваш JSON, вставив соответствующие отступы, вероятно, сохранит некоторое форматирование, которое вы ожидаете.