@maieve

Python: как оставить в текстовом файле строки определенного формата?

Всем привет! Только изучаю программирование на Python, приношу извинения, если пишу куда-то не туда. Задача -
есть текстовый файл подобного формата:

{"total":20,"rows":[
{"id":123,"mark":null,"Status":2,"MessageNumber":123456789,"text":"Привет"},
{"id":1234,"mark":null,"Status":1,"MessageNumber":23456789,"text":"Пока"},
{"id":12345,"mark":null,"Status":2,"MessageNumber":345678, "text":"Ало"}]
}

Мне нужно взять все номера ордеров, которые идут после MessageNumber (их в файле в районе 20) и записать их в отдельный текстовый файл в формате: 123123123, 234234234, 34534534

Подумал о том, что можно считать данный файл как одну строку, затем начать по ней проходиться, а после нахождения слова MessageNumber - выписать определенное количество символов после него в другой файл, и так пока строка не закончится.
  • Вопрос задан
  • 84 просмотра
Пригласить эксперта
Ответы на вопрос 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
На самом деле этот файл представляет из себя json, который и надо разбирать как json, не занимаясь разбиением на строки и прочей ерундой:

import json

json_text = '''{"total":20,"rows":[
{"id":123,"mark":null,"Status":2,"MessageNumber":123456789,"text":"Привет"},
{"id":1234,"mark":null,"Status":1,"MessageNumber":23456789,"text":"Пока"},
{"id":12345,"mark":null,"Status":2,"MessageNumber":345678, "text":"Ало"}]
}'''

data = json.loads(json_text)

numbers = [x["MessageNumber"] for x in data["rows"]]
print (numbers)
with open("output.txt", "w") as f:
   print (", ".join(str(x) for x in numbers), file=f)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы