2016-12-12 2 views
0

Я пытаюсь извлечь данные из текстового файла и поместить его в 2D-массив, где столбцы организованы по какому значению они представляют, поэтому я могу построить данные и проанализировать их. Данные в текстовом файле отформатирован какЧтение текстового файла в 2D-массив в Python

10.24284 49.89447 462.90 312.4 Ср Дек 7, 2016 6: 42: 10p EST

Я хочу, чтобы иметь возможность отделить значения в каждом столбце в их собственные списки или полный 2D-массив. Я пробовал смотреть в open('filename'), а также readlines, но он просто возвращает беспорядок чисел, которые не отсортированы каким-либо образом. Какое наилучшее решение проблемы?

+0

Является ли ваш входной файл хорошо структурированным? Вы можете попробовать использовать формат CSV для входного файла, чтобы упростить извлечение столбцов для каждой строки ввода. –

+0

Разделить каждую строку и сохранить эти массивы в массив => 2D-массив? – qxz

ответ

0

Числа часть тривиальна ...

result = [map(float, L.split()[:4]) for L in open("datafile.txt")] 

result[43][2] будет третий номер на 44-й строке (отсчет начинается с 0 в Python)

1

Используя open('filename', 'r') (г означает чтение) вы можете перебрать все строки в коде с помощью простого цикла. что-то вроде этого:

with open('filename', 'r') as inputfile: 
    for line in inputfile: 
     #do something with the string 

Вы сказали, что данные, которые вы имели отформатирован следующим образом:

10,24284 49,89447 462,90 312,4 Ср Дек 7, 2016 6: 42: 10p EST

вы можете взять каждую линию и разделить ее на каждое следующее пространство:

line.split(" ") 

Вы w Уальд теперь есть что-то вроде:

['10.24284', '49.89447', '462.90', '312.4', 'Wed', 'Dec', '7,', '2016', '6:42:10p', 'EST'] 

если вы хотите сохранить дату вместе в конечном массиве можно ограничить, сколько раз вы разделяете это так:

line.split(" ", 4) 

это даст вам:

['10.24284', '49.89447', '462.90', '312.4', 'Wed Dec 7, 2016 6:42:10p EST'] 
Смежные вопросы