2010-03-09 2 views
0

Я открыл файл CSV, и я хочу, чтобы отсортировать каждую строку, которая разделенная запятую и в одной строке:Как отделить данные, разделенные запятыми, из файла csv?

экс :: Файл:

name,sal,dept 
tom,10000,it 

о/р :: каждой строки в строке переменная

У меня есть файл, который уже открыт, поэтому я не могу использовать «открытый» API, мне нужно использовать «csv.reader», который должен читать по одной строке за раз.

+3

@Rahul, извините, я не совсем понимаю, о чем вы спрашиваете. Не могли бы вы предоставить примеры с кадром и ваш результат? – MattH

+0

Вы спрашиваете, как использовать csv? http://docs.python.org/library/csv.html Что случилось с документацией? –

ответ

0

Я не знаю, правильно ли я понял ваш вопрос. Вы можете взглянуть на функцию split, описанную в Python documentation в любом случае.

+0

Я просто хочу получить данные из строки строки csv file byline, так как моя первая строка файла содержит имена полей, и после этого вся строка содержит данные. – Rahul99

2

Если файл открыт для чтения, он привязан к имени переменной, например fin; и при условии, что вы используете Python 2.6, и вы знаете, что файл не пуст (имеет по крайней мере строка с заголовками):

import csv 

rd = csv.reader(fin) 
headers = next(rd) 
for data in rd: 
    ...process data and headers... 

В Python 2.5, используйте headers = rd.next() вместо headers = next(rd).

Этих версии используют список полого data, который является полностью общим решением (то есть, вам не нужно знать заранее, сколько столбцов в файле есть: вы будете обращаться к ним как data[0], и т.д., и текущая строка имеет len(data) полей на каждой ноге цикла).

Если вы знаете, что файл имеет ровно три столбца и предпочитаете использовать отдельные имена для переменного на столбец, изменить заголовок цикла для:

for name, sales, department in rd: 

поля данных, возвращаемый читателем (так же, как заголовки) - все строки. Если вы знаете, например, что второй столбец является ИНТ и хотите, чтобы рассматривать его как таковой, запустить цикл с

for data in rd: 
    data[1] = int(data[1]) 

или, если вы используете вариант с именем-переменные:

for name, sales, department in rd: 
    sales = int(sales)