我正在从包含以下数据的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
当我使用循环迭代它时,我能够通过以下代码按行打印数据并且只能打印column1数据。
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列的数据。
答案 0 :(得分:12)
以下是我如何获得第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 :(得分:4)
您的第一行只有一列,因此该过程失败并且不会继续。要解决,只需跳过第一行
>>> 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 ')
答案 2 :(得分:1)
希望它能解决问题
import csv
file=open( "xyz.CSV", "r")
reader = csv.reader(file)
for line in reader:
t=line[0]+","+line[1]
print (t)
答案 3 :(得分: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
只需将行中的值作为切片放入。下面是打印第二和第三列的代码。
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
答案 4 :(得分: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")作为输入文件:
对于inputfile中的行:
results.append(line.strip()分割('&#39))
答案 5 :(得分:0)
有一个简单的方法,您可以在以下位置查看更多信息: Python CSV Docs
with open(filename, 'r') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in spamreader:
data.append(row)
答案 6 :(得分:0)
尽管这是一个很老的问题,但只想分享我的建议。发现使用数据框中的熊猫读取csv和访问数据更容易。
import pandas
df = pandas.read_csv('<path/to/your/csv/file>')
print(df)
#OUTPUT
# col1 col2 col3 col4
#0 name1 empId1 241682-27638-USD-CIGGNT 1
#1 name2 empId2 241682-27638-USD-OCGGINT 1
#2 name3 empId3 241942-37190-USD-GGDIV 2
#3 name4 empId4 241942-37190-USD-CHYOF 1
#4 name5 empId5 241942-37190-USD-EQPL 1
#5 name6 empId6 241942-37190-USD-INT 1
#6 name7 empId7 242066-15343-USD-CYJOF 3
#7 name8 empId8 242066-15343-USD-CYJOF 3
#8 name9 empId9 242066-15343-USD-CYJOF 3
#9 name10 empId10 241942-37190-USD-GGDIV 2
#you can access any column using
df['col2']
#OUTPUT
#0 empId1
#1 empId2
#2 empId3
#3 empId4
#4 empId5
#5 empId6
#6 empId7
#7 empId8
#8 empId9
#9 empId10
#Name: col2, dtype: object
#Or print a specific value using
df['col2'][0]
答案 7 :(得分:0)
您还可以在不导入熊猫和csv的情况下读取csv数据
with open('testdata.csv', 'r') as f:
results = []
for line in f:
words = line.split(',')
results.append((words[0], words[1:]))
print (results)