У меня есть информация о координатах патчей, которые необходимо сохранить для дальнейшей обработки. Я сохранил координаты (списки) в файлы patch_info.txt
, и данные похожи на это для одного файла, и я добавляю информацию в цикл for для каждого файла мата в текстовый файл:
[[117, 90, 75, 102, 105, 132],
[117, 83, 68, 102, 98, 132],
[117, 82, 67, 102, 97, 132],
[116, 73, 58, 101, 88, 131],
[115, 67, 52, 100, 82, 130],
[112, 129, 114, 97, 144, 127],
[110, 97, 82, 95, 112, 125],
[109, 55, 40, 94, 70, 124],
[102, 93, 78, 87, 108, 117],
[99, 134, 119, 84, 149, 114],
[96, 117, 102, 81, 132, 111],
[96, 72, 57, 81, 87, 111],
[82, 126, 111, 67, 141, 97],
[78, 110, 95, 63, 125, 93]],
'labels-001-012.mat']
и я использовал следующий код, чтобы снова прочитать их в python:
patch_info=[]
with open('patch_info.txt') as f:
for line in f.readlines():
line=line.strip('\n')
patch_info.append(ast.literal_eval(line))
Мой вопрос в том, что некоторые пользователи не предлагают использовать ast.literal_eval
, что лучший способ прочитать числовой список данных в python?
Если вы можете форматировать данные в текстовом файле как данные json, вы используете json.load
для анализа данных. Это намного лучше, чем использование ast.literal_eval
Если ваши данные еще не отформатированы, вы можете использовать некоторую предварительную обработку с помощью sed
/awk
или что-то подобное, чтобы преобразовать его в необходимый формат json
Например, рассмотрите следующие данные в файле с именем test.data
[
[1,2],
[6,7],
[1,2],
[6,7],
[1,2],
[6,7],
[1,2],
[6,7],
[1,2],
[6,7]
]
Затем вы можете загрузить их на python, выполнив
>>> with open('test.data2', 'r') as f:
... data = json.load(f)
...
>>> data
[[1, 2], [6, 7], [1, 2], [6, 7], [1, 2], [6, 7], [1, 2], [6, 7], [1, 2], [6, 7]]
>>>