2014-11-13 4 views
4

Я чтение данных из файла CSV (xyz.CSV), который содержит ниже данных:Чтение данных из файла CSV в Python

col1,col2,col3,col4 
name1,empId1,241682-27638-USD-CIGGNT ,1 
name2,empId2,241682-27638-USD-OCGGINT ,1 
name3,empId3,241942-37190-USD-GGDIV ,2 
name4,empId4,241942-37190-USD-CHYOF ,1 
name5,empId5,241942-37190-USD-EQPL ,1 
name6,empId6,241942-37190-USD-INT ,1 
name7,empId7,242066-15343-USD-CYJOF ,3 
name8,empId8,242066-15343-USD-CYJOF ,3 
name9,empId9,242066-15343-USD-CYJOF ,3 
name10,empId10,241942-37190-USD-GGDIV ,2 

Когда я итерация его с петлей я в состоянии напечатать data row wise и только данные столбца1 по приведенному ниже коду.

file=open(path +"xyz.CSV", "r") 
reader = csv.reader(file) 
for line in reader: 
    t=line[0] 
    print t 

По вышеуказанному коду я могу получить только первую колонку.

Если я попытаюсь напечатать строку [1] или строку [2], это даст мне ошибку ниже.

file=open(path +"xyz.CSV", "r") 
    reader = csv.reader(file) 
    for line in reader: 
     t=line[1],[2] 
     print t 

t=line[1],line[2] 
IndexError: list index out of range 

Просьба предложить для печати данных column2 или column3.

+0

Рассмотрите возможность использования ['csv.reader'] (https://docs.python.org/2/library/csv.html). – Amadan

+0

Имеет ли файл csv также 'xyz.CSV col1, col2, col3, col4'. Если это так, то первая строка содержит только один элемент i.e. '['xyz.CSV']', а затем, когда вы пытаетесь получить доступ к [1], он терпит неудачу. – sk11

+0

Возможный дубликат [Как читать и писать CSV-файлы с помощью Python?] (Http://stackoverflow.com/questions/41585078/how-do-i-read-and-write-csv-files-with-python) –

ответ

3

Вот как я получил 2-е и 3-й колонки:

import csv 

path = 'c:\\temp\\' 

file=open(path +"xyz.CSV", "r") 
reader = csv.reader(file) 
for line in reader: 
    t=line[1],line[2] 
    print(t) 

Вот результаты:

('col2', 'col3') 
('empId1', '241682-27638-USD-CIGGNT ') 
('empId2', '241682-27638-USD-OCGGINT ') 
('empId3', '241942-37190-USD-GGDIV ') 
('empId4', '241942-37190-USD-CHYOF ') 
('empId5', '241942-37190-USD-EQPL ') 
('empId6', '241942-37190-USD-INT ') 
('empId7', '242066-15343-USD-CYJOF ') 
('empId8', '242066-15343-USD-CYJOF ') 
('empId9', '242066-15343-USD-CYJOF ') 
('empId10', '241942-37190-USD-GGDIV ') 
1

Надеется, что это очищает вопрос

import csv 
file=open("xyz.CSV", "r") 
reader = csv.reader(file) 
for line in reader: 
    t=line[0]+","+line[1] 
    print (t) 
+0

Нет, он дает ту же ошибку, что и IndexError: индекс индекса за пределами диапазона. – Rohit

+0

Странно! Он отлично работает на моей машине. Что вы назначаете точно? –

3

Вашей первая линия имеет только один столбец, поэтому процесс терпит неудачу и не продолжается. Для того, чтобы решить, просто пропустить первый ряд

>>> with open(path, "r") as file: 
...  reader = csv.reader(file) 
...  for idx,line in enumerate(reader): 
...   if idx>0: 
...    t=line[1],line[2] 
...    print t 
... 
('empId1', '241682-27638-USD-CIGGNT ') 
('empId2', '241682-27638-USD-OCGGINT ') 
('empId3', '241942-37190-USD-GGDIV ') 
('empId4', '241942-37190-USD-CHYOF ') 
('empId5', '241942-37190-USD-EQPL ') 
('empId6', '241942-37190-USD-INT ') 
('empId7', '242066-15343-USD-CYJOF ') 
('empId8', '242066-15343-USD-CYJOF ') 
('empId9', '242066-15343-USD-CYJOF ') 
('empId10', '241942-37190-USD-GGDIV ') 
0
import csv 
csv_file=open("xyz.csv", "r") 
reader = csv.reader(csv_file) 

for row in reader: 
    print(" ".join(row[:2])) 

Output :- 
col1 col2 
name1 empId1 
name2 empId2 
name3 empId3 
name4 empId4 
name5 empId5 
name6 empId6 
name7 empId7 
name8 empId8 
name9 empId9 
name10 empId10 

Просто положить значение в строке как срез. Ниже приведен код для печати 2-й и 3-й колоний.

import csv 
csv_file=open("xyz.csv", "r") 
reader = csv.reader(csv_file) 

for row in reader: 
    print(" ".join(row[1:3])) 

output: 
col2 col3 
empId1 241682-27638-USD-CIGGNT 
empId2 241682-27638-USD-OCGGINT 
empId3 241942-37190-USD-GGDIV 
empId4 241942-37190-USD-CHYOF 
empId5 241942-37190-USD-EQPL 
empId6 241942-37190-USD-INT 
empId7 242066-15343-USD-CYJOF 
empId8 242066-15343-USD-CYJOF 
empId9 242066-15343-USD-CYJOF 
empId10 241942-37190-USD-GGDIV 
0

для чтения и записи в текстовый файл в Python, вы можете использовать синтаксис:

f = open('helloworld.txt','r') 
message = f.read() 
print(message) 
f.close() 


f = open('helloworld.txt','w') 
f.write('hello world') 
f.close() 

Для чтения CSV-файла используйте следующий код: results = [] enter code here с открытым («C:/Users/Prateek/Desktop/TA Project/data1.csv») в качестве входного файла: для строки в файле ввода: results.append (line.strip(). split (','))

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