2010-06-26 2 views
4

У меня есть таблица значений, разделенная запятыми, которую я хочу прочитать в Python. Мне нужно сначала сказать Python, чтобы не пропустить первую строку, потому что она содержит заголовки. Затем мне нужно сказать ему, чтобы читать данные как список, а не строку, потому что мне нужно собрать массив из данных, а первый столбец нецелый (заголовки строк).Как определить заголовки столбцов при чтении файла csv в Python

В общей сложности 11 столбцов и 5 строк.
Вот формат таблицы (за исключением того, что нет ни одного ряда пробелов):

col1,col2,col3,col4,col5,col6,col7,col8,col9,col10,col11 

w0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10   
w1 1, 2, 3, 4, 5, 6, 7, 8, 9, 10  
w2 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 
w3 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 

Есть ли способ сделать это? Любая помощь очень ценится!

+0

Если документация модуля ['csv'] (https://docs.python.org/3/library/csv.html) слишком длинная для вас, я создал статью [TL; DR mini] (http://martin-thoma.com/python-csv/) с копируемым кодом. –

ответ

26

Вы можете использовать csv module для такого рода вещей. Он будет считываться в каждой строке как список строк, представляющих разные поля.

Как именно вы хотели бы использовать это зависит от того, как вы собираетесь обрабатывать данные впоследствии, но вы могли бы рассмотреть вопрос о внесении Reader объекта (от функции csv.reader()), вызывая next() на него один раз, чтобы получить первые строки, то есть заголовки, а затем итерации по оставшимся линиям в цикле for.

r = csv.reader(...) 
headers = r.next() 
for fields in r: 
    # do stuff 

Если вы собираетесь наматывать положить поля в Словаре, вы бы использовать DictReader вместо (и этот класс будет автоматически принимать имена полей из первой строки, так что вы можете построить его в используйте его в цикле).

+11

примечание для Python 3: используйте 'next (r)' – Aprillion