Заменить строку другой строкой в ​​массиве - PullRequest
0 голосов
/ 13 декабря 2018

Мой файл до сих пор выглядит следующим образом:

[
{
    "asks" : [
        [
            0.00276477,
            NumberInt(9)
        ],
        [
            0.00276478,
            NumberInt(582)]]

}
]

Я хотел бы заменить «NumberInt (9)» на цифру 9.

То, что я пробовал до сих пор, выглядит такэто:

json_data=open("test.json").read()
number = re.findall("NumberInt\(([0-9]+)\)", json_data)
Nint = re.findall("(Nu.*)", json_data)
json_data.replace('Nint', 'number')

Но это не заменяет его в моем оригинальном файле ... У кого-то есть идея?

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Первая точка: используйте re.sub() вместо str.replace() здесь.Также обратите внимание, что строки Python являются неизменяемыми, поэтому в обоих случаях вам нужно привязать свою строку к результату функции.

Второй момент: ваш файл OF COURSE не будет обновлен, если вы явно не сделаете это с помощьюсамостоятельно - вы должны записать исправленную строку в файл (открыть файл в режиме записи).

0 голосов
/ 13 декабря 2018

Вот как это сделать, основываясь на документации re.sub():

with open("test.json") as file: 
    json_data = file.read()
new_json = re.sub("NumberInt\(([0-9]+)\)", r"\1", json_data)

Обратите внимание, что re.sub() возвращает копию строки, как встроеннаяв str.replace() метод делает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...