2016-08-11 85 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