将CSV文件导入Python
我正在尝试将csv文件导入Python。我这里有两个问题 Q1.我的代码是:将CSV文件导入Python,python,csv,Python,Csv,我正在尝试将csv文件导入Python。我这里有两个问题 Q1.我的代码是: import csv with open('highfrequency2.csv') as csvfile: freq=csv.reader(csvfile, delimiter=',') for row in freq: print(row[1],row[8]) 但这里有一条错误消息 索引器错误:列表索引超出范围 Q2.我的数据输出如下所示 ['WOSl.TQ', '02-Jan-14', '51:
import csv
with open('highfrequency2.csv') as csvfile:
freq=csv.reader(csvfile, delimiter=',')
for row in freq:
print(row[1],row[8])
但这里有一条错误消息
索引器错误:列表索引超出范围
Q2.我的数据输出如下所示
['WOSl.TQ', '02-Jan-14', '51:48.0', 'Quote', '', '']
['WOSl.TQ', '02-Jan-14', '51:48.0', 'Quote', '', '']
['WOSl.TQ', '02-Jan-14', '51:48.0', 'Quote', '', '']
['WOSl.TQ', '02-Jan-14', '51:48.0', 'Quote', '', '']
['WOSl.TQ', '02-Jan-14', '51:48.0', 'Quote', '', '']
.....
....
在读取文件时是否必须使用“r”或“rb”函数
我想查看CSV文件的第2行和第8行。您的行有6个元素,您正在尝试打印第2行和第9行。后者不存在,因此列表索引超出范围(索引从0开始)。如果只需要第2-8行,请在读卡器对象上使用
itertools.islice
:
import csv
from itertools import islice, izip
with open('highfrequency2.csv') as csvfile:
freq = csv.reader(csvfile)
# create islice object
interest = islice(freq, 1, 8, None))
# iterate over islice object getting row at a time
for row in interest:
print(row)
如果只需要这两行,请使用6的步骤:
import csv
from itertools import islice, izip
with open('highfrequency2.csv') as csvfile:
freq = csv.reader(csvfile)
interest = islice(freq, 1, 8, 6))
for row in interest:
print(row)
或在跳过第一行后调用reader对象的next:
import csv
with open('highfrequency2.csv') as csvfile:
freq = csv.reader(csvfile)
next(freq)
# create generator expression
interest = (next(freq) for _ in range(7))
for row in interest:
print(row)
或使用枚举:
import csv
with open('highfrequency2.csv') as csvfile:
freq = csv.reader(csvfile)
interest = (row for ind, row in enumerate(freq) if ind in {1,7})
for row in interest:
print(row)
嗨,非常感谢。我想我犯了一个愚蠢的错误。在excel中,行表示水平线,但在Python中,行表示垂直线。我只想看到csv数据的前几行水平线。对此我能做些什么?再次感谢。我相信freq是一个列表?我知道了,我没有验证我的假设。如果是我做这个问题,我要做的第一件事就是运行csvlint以确保csv文件是正确的。非常感谢Padraic。“再来一个。”崔斯坦孙,当然,有什么问题吗?非常感谢帕德雷克。它起作用了。再来一杯。如何以表格格式生成输出?就像我原来的表格格式一样。谢谢你的意思是csv文件吗?我使用了你的代码,并且输出都在一起。我只想逐行查看输出。有没有办法做到这一点?就像我原来的桌子。谢谢