J'ai un jeu de données d'entrée au format .txt qui ressemble,

[[1, 2, 3], [4, 5, 6]]


[[7, 8, 9], [10, 11, 12]]

Comment le lire dans une liste Python 3D où le premier index est le numéro de ligne. tel que,

list[0][0][0] = 1


list[1][1][2] = 12
1
Sankarshana 8 mars 2019 à 04:45

2 réponses

Meilleure réponse

Utilisez with open avec une boucle pour obtenir chaque ligne et utilisez ast.literal_eval pour la placer dans une liste, puis ajoutez-la à la liste l_3d:

import ast
l_3d = []
with open('file.txt', 'r') as f:
    for line in f:
        l_3d.append(ast.literal_eval(line.rstrip()))

Grâce à @khachik :-), vous pouvez faire la même chose avec json.loads:

import json
l_3d = []
with open('file.txt', 'r') as f:
    for line in f:
        l_3d.append(json.loads(line.rstrip()))

Et maintenant dans les deux cas:

print(l_3d)

Est:

[[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]
2
U11-Forward 8 mars 2019 à 02:02
import numpy as np
import json
with open('test.txt', 'r') as f:
    data = f.read()
datalist = data.split('\n')
blank = []
for i in range(len(datalist)):
    blank.append(json.loads(datalist[i]))
blank[1][1][1]
0
Tom.chen.kang 8 mars 2019 à 01:59