#python #arrays #file-handling
#python #массивы #обработка файлов
Вопрос:
Я пытаюсь извлечь данные разных типов, заключенные в несколько типов пробелов, из последних N строк текстового файла в массивы на python
Я пытался использовать функцию split () для разделения данных, но не смог получить правильные элементы разделения, поскольку между данными, которые я хочу фактически разделить и сохранить, есть несколько разных типов пробелов
Это образец текстового файла, который у меня есть :
{"2019-03-29": [["A", "B", "C"], [0, 4, 3, 0, 0, 2, 0], [0, 1, 1, 0, 0, 0, 1]]},
{"2019-03-29": [["A", "B", "C"], [0, 4, 3, 0, 0, 2, 0], [0, 1, 1, 0, 0, 0, 1]]},
{"2019-03-29": [["A", "B", "C"], [0, 4, 3, 0, 0, 2, 0], [0, 1, 1, 0, 0, 0, 1]]},
{"2019-03-29": [["A", "B", "C"], [0, 4, 3, 0, 0, 2, 0], [0, 1, 1, 0, 0, 0, 1]]},
{"2019-03-29": [["A", "B", "C"], [0, 4, 3, 0, 0, 2, 0], [0, 1, 1, 0, 0, 0, 1]]},
{"2019-04-01": [["A", "B", "C"], [0, 4, 3, 0, 0, 2, 0], [0, 1, 1, 0, 0, 0, 1]]},
{"2019-04-01": [["A", "B", "C"], [0, 4, 3, 0, 0, 2, 0], [0, 1, 1, 0, 0, 0, 1]]},
{"2019-04-01": [["A", "B", "C"], [0, 5, 3, 0, 0, 2, 0], [0, 0, 1, 0, 0, 0, 1]]},
{"2019-04-01": [["A", "B", "C"], [0, 5, 3, 0, 0, 2, 0], [0, 0, 1, 0, 0, 0, 1]]},
{"2019-04-01": [["A", "B", "C"], [0, 5, 3, 0, 0, 2, 0], [0, 0, 1, 0, 0, 0, 1]]},
Я хотел бы иметь возможность извлекать данные из последних 6 строк, например, и получать следующие результаты :
(arr1 размером 6×1)
arr1 = [ [2019-03-29] , [2019-04-01] , [2019-04-01], [2019-04-01] , [2019-04-01] , [2019-04-01] ]
(arr2 размером 6×7)
arr2 = [[0, 4, 3, 0, 0, 2, 0], [0, 4, 3, 0, 0, 2, 0], [0, 4, 3, 0, 0, 2, 0], [0, 5, 3, 0, 0, 2, 0], [0, 5, 3, 0, 0, 2, 0], [0, 5, 3, 0, 0, 2, 0]]
Комментарии:
1. Является ли это
json
файлом?2. @Rakesh Это вроде как один, но это всего лишь файл журнала, который записывает эти данные в текстовый файл.
Ответ №1:
Вы можете перебирать строки и сохранять последние шесть в массиве.
with open('jsons.txt') as jsons:
lines = []
for line in jsons:
lines.append(line)
if len(lines) > 6:
lines.pop(0)
arr1 = []
arr2 = []
for line in lines:
j = json.loads(line)
for k in j:
arr1.append([k])
arr2.append(j[k][0][1])
Ответ №2:
Вы можете прочитать каждую строку как объект Json, который будет сопоставлен со списком словаря со списком объектов.
Здесь есть несколько примеров.
Но в принципе, прочитайте каждую строку и вызовите json.loads(строка), и вы получите словарь для каждой строки.
Оттуда вы можете начать работать как обычно с Python и получить все, что вам нужно.
Ответ №3:
Прочитайте файл в обратном порядке, чтобы получить последние 6 строк.
for line in reversed(list(open("filename"))):
print(line.strip())
разделил строки с помощью функции spilt() на символ ‘:’:-
line.spilt(':')
Добавьте дату и список списков([[]]) в разные списки. позже отформатируйте второй полученный список в список нужного формата, используя вложенный цикл for.