我正在从包含以下数据的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
Run Code Online (Sandbox Code Playgroud)
当我用循环迭代它时,我能够通过以下代码按行打印数据并且只能打印column1数据.
file=open( path +"xyz.CSV", "r")
reader = csv.reader(file)
for line in reader:
t=line[0]
print t
Run Code Online (Sandbox Code Playgroud)
通过上面的代码我只能得到第一列.
如果我尝试打印行[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
Run Code Online (Sandbox Code Playgroud)
请建议打印column2或column3的数据.
Ald*_*ven 17
这是我如何获得第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)
Run Code Online (Sandbox Code Playgroud)
结果如下:
('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 ')
Run Code Online (Sandbox Code Playgroud)
虽然这是一个很老的问题,但只是想分享我的建议。发现在数据框中使用 Pandas 读取 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]
Run Code Online (Sandbox Code Playgroud)
更新:我主要在我的项目中使用 Pandas,所以发现用它来读取 csv 也更容易。还有其他专用库可用于读取 CSV(创建自己的 CSV 阅读器也应该是几行代码)。
| 归档时间: |
|
| 查看次数: |
28527 次 |
| 最近记录: |