2016-01-26 2 views
1

имена полей я разобранные и извлекал линию и имена полей из файла данных CSV с помощью:Извлечения данных с использованием

reader = csv.DictReader(open('Sourcefile.txt','rt'), delimiter = '\t') 
fn = reader.fieldnames 

Как получить доступ к анализируемым данным в любой строке, используя имя_поль? Например, полевые имена могут быть AA, BB, CC, DD. Как получить значение для DD в строке 5 или AA в строке 3?

+0

Я не уверен, что вы можете просто пропустить строки, но вы можете просто прочитать строки 'x-1' и проигнорировать результат перед чтением строки' x' и сделать что-то –

+0

И есть ли 'rt' опечатка? Я думаю, что это должно быть 'rb' для read-binary –

ответ

2

Пока файл не слишком большой, просто преобразовать читателя в список:

data = list(reader) 

Теперь доступ столбец AA в строке 1:

data[0]['AA'] 

или столбца для имени поля 3 в строке 3:

data[2][fn[2]] 
0

Простым способом является хранение всех данных в вашем файле в контейнере. Альтернативой другой ответ является использование панд dataframe:

>>import pandas as pd 
>>from io import StringIO # just to make a fake in memory file 
>>s = StringIO('AA\tBB\tCC\tDD\n1\t2\t3\t4\n11\t12\t13\t14\n') # fake data 
>>data = pd.read_table(s) 
>>data.loc[0,'AA'] # access row 0 (the first row) and column AA 
1 

Edit: Это действительно использует другой пакет не входит в состав стандартной библиотеки, но я часто проще использовать панд, чем CSV, когда я постоянно чтение и управление csv-файлами.

Смежные вопросы