2016-08-11 78 views
0

这应该是一个容易的,但我有一点脑屁。 CSV维护一个包含四个纬度和经度对的列表。根据代码,如果我打印行[0],它只打印纬度,如果我打印行[1]则打印经度。如何将代码格式化为打印特定的经纬度对呢?说.. CSV中的第二个经纬度对。从csv.reader打印

import csv 

with open('120101.KAP.csv','rb') as csvfile: 
    reader = csv.reader(csvfile) 
    for row in reader: 
     print row[0] 

回答

3

循环使用reader为您提供每一行。如果你想获得的第二行,使用next() function代替,忽略一个并获得第二:

reader = csv.reader(csvfile) 
next(reader) # ignore 
row = next(reader) # second row 
print row   # print the second row. 

您可以通过使用itertools.islice() object做跳跃的你概括如下:

from itertools import islice 

reader = csv.reader(csvfile) 
row = next(islice(reader, rownumber)) # skip to index rownumber, read that 
print row 

考虑到计数从0开始,所以“第二行”是rownumber = 1

或者你可以只读取所有行到一个列表和索引成:

reader = csv.reader(csvfile) 
rows = list(reader) 
print rows[1] # print the second row 
print rows[3] # print the fourth row 

只有做到这一点(加载一切都变成清单)如果有行的数量有限。对读取器的迭代只会一次产生一行,并使用文件缓冲区进行高效读取,从而限制使用多少内存;您可以通过这种方式处理巨大的CSV文件。

+0

这工作就好了,有没有什么办法有print语句打印说只是 48.400006749152,-71.083320495196 作为反对 ['48 0.400006749152,-71.083320495196 '] – dpalm

+1

@dpalm - '打印 ', '.join(rows [1])'或'print','。join(row)',具体取决于您使用的示例。感谢芽, –

+0

,效果很好 – dpalm