Извлечение данных из последних N строк текстового файла в массивы в Python - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь извлечь данные разных типов, заключенные в несколько типов пробелов, из последних N строк txt-файла в массивы в 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 измерений 6x1)

arr1 = [ [2019-03-29] , [2019-04-01] , [2019-04-01], [2019-04-01] , [2019-04-01] , [2019-04-01] ] 

(arr2 размеров 6x7)

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]]

Ответы [ 3 ]

0 голосов
/ 02 апреля 2019

Считайте файл в обратном порядке, чтобы получить последние 6 строк.

for line in reversed(list(open("filename"))):
    print(line.strip())

пролили строки с помощью функции spilled () на символе ':': -

line.spilt(':')

Добавить дату исписок списка ([[]]) для разных списков.позже отформатируйте второй полученный список в список нужного формата, используя вложенный цикл for.

0 голосов
/ 02 апреля 2019

Вы можете перебирать строки и сохранять последние шесть в массиве.

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])
0 голосов
/ 02 апреля 2019

Вы можете прочитать каждую строку как объект Json, который будет отображаться в Список словаря со списком объектов.

У вас есть несколько примеров здесь .

Но в основном читайте каждую строку и вызывайте json.loads (line) , и вы получите словарь для каждой строки.

Оттуда вы можете работать как обычно с Python и получать все, что угоднотебе нужно.

...