Как отделить запятую данных из файла CSV? - PullRequest
0 голосов
/ 09 марта 2010

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

ex :: file:

name,sal,dept
tom,10000,it

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

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

Ответы [ 2 ]

2 голосов
/ 09 марта 2010

Если файл, открытый для чтения, привязан к имени переменной, скажем 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], data[1] и т. Д., И текущая строка имеет поля len(data) на каждом участке цикла).

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

 for name, sales, department in rd:

Данные поля, возвращаемые читателем (как заголовки), являются строками. Например, если вы знаете, что второй столбец имеет тип int, и хотите обрабатывать его как таковой, начните цикл с

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

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

 for name, sales, department in rd:
     sales = int(sales)
0 голосов
/ 09 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...