2013-04-22 198 views
2

目前,我有一個列表直接在我的代碼中,並使用枚舉,因此我可以使用列表索引號爲用戶選擇其中一個項目。看起來像(包括剛剛標題行)這個閱讀csv,然後列舉

fmpList = [['Date', 'ID', 'Plot No', 'Modified', 'Lat', 'Long']...... 
for item in enumerate(fmpList[]):    
    print "[%d] %s" % item 

這種運作良好,但我不希望把功能列表,而是從文件中讀取的CSV。我以前做的,這是另一種選擇......

​​

這也適用,但我似乎無法在2相結合...讀取csv文件,然後枚舉能有基於選擇在索引上。 幫助將不勝感激

編輯: 因爲我想現在我已經得到了工作代碼...

​​

但最後一行是不是給我列2只顯示。實際上,我在第0列(索引號)和第2列(圖名)之後。 [0]給出第一列...很酷,但是任何大於1的數字都會給出IndexError:..out範圍。想盡組合,但沒有工作

+3

'因爲我,行枚舉(plotlist)'? – sapi 2013-04-22 04:43:55

+0

請參閱http://stackoverflow.com/questions/6410982/enumerate-items-in-a-list-so-a-user-can-select-the-numeric-value – gimel 2013-04-22 04:54:10

+0

您的CSV格式如何。分隔符可能只是一個字符,現在你有選項卡和空間 – jamylak 2013-04-22 04:54:52

回答

4

enumerate(...)適用於任何可迭代

import csv 
with open ('fmpList.csv', 'rU') as csvfile: 
    next(csvfile, None) # skip header 
    plotlist = csv.reader(csvfile, delimiter=',', dialect=csv.excel_tab) 
    for i, row in enumerate(plotlist): 
     print "[%d] %s" % (i, row) 
+3

+1這就是我會做的。 – 2013-04-22 05:08:45

+0

這樣的效果很好,但我也在排列(plotlist [1:]):爲了擺脫標題行,但現在我得到了TypeError。我該怎麼做呢? – 2013-04-22 05:27:35

+0

@ Op.Ivy您不能使用列表切片語法切片文件,我剛剛添加了對'next'的調用,以將文件迭代器前移一個項目以跳過標題 – jamylak 2013-04-22 05:28:52