Чтение данных из файла CSV в Python

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

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

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

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

Пожалуйста, предложите распечатать данные столбца2 или столбца3.

Ответ 1

Вот как у меня есть 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 ')

Ответ 2

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

>>> 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 ')

Ответ 3

Надеемся, что он очистит проблему.

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

Ответ 4

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 

Ответ 5

Чтобы прочитать и записать в текстовый файл в 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(). сплит ( ''))

Ответ 6

Существует простой метод, с которым вы можете ознакомиться по адресу: Python CSV Docs

with open(filename, 'r') as csvfile:
        spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
        for row in spamreader:
            data.append(row)