2013-06-12 158 views
2

我試圖讀取Excel文件的一些數據在PythonPython變量列表填充

我希望將數據放入一個二維表

[[A,1,2...],[B,2,3...],[C,5,6...]] 

其中A,B,C是山坳頭和數字是在該列

行,現在我使用只是爲了測試這是否會工作,所以我知道代碼沒有做什麼我上面

#Blank list array 
product = [] 
k = 0 
#Read in Data 
for r in range(1,sheet.nrows): 
    k += 1; 
    product[k,1] = sheet.cell(r,1).value 

即時通訊錯誤說,列表索引必須是整數,而不是元組 有沒有辦法像這樣用變量填充列表,因爲我不知道excel文件中列可能有多少行 我已經聽說過字典,但從我讀過的書我不認爲這些將是我的最佳選擇,因爲他們更「關鍵」「價值」,我有一個「關鍵」的多個值

+2

將'product [k,1]'更改爲'product [k] [1]' – karthikr

+1

您可以使用字典完成此操作,請參閱:http://stackoverflow.com/questions/5378231/python-list-to -dictionary-multiple-values-per-key –

+0

@Kathikr現在我得到的列表索引超出範圍 – shreddish

回答

2

字典會爲你工作,因爲每個值都可以成爲一個列表。

product = {} 
for col in range(sheet.ncols): 
    values = [] 
    for row in range(1, sheet.nrows): 
     values.append(sheet.cell(row, col).value) 
    product[sheet.cell(0, col)] = values 

這將允許您通過列標籤訪問任何列的值列表。

> print product['B'] 
> [1, 4, 2, 6, 7] 

編輯:編輯將分析行更改爲列而不是。

+0

好像它會與一些調整一起工作你的解析是向後的,我想要做什麼......我想解析column1中的每一行,然後解析column2中的每一行,你正在解析每一列在row1等等...我嘗試使用以下代碼 作爲col in range(sheet.ncols): values = [] for row in range(sheet.nrows): values.append(sheet.cell(row ,col).value) product [col] = values \t print product [1] 當我打印產品[1]時,我得到了時髦的結果我ge t: [u'B',3.0,4.0] 我認爲value.append只適用於整數,所以它告訴我u'B'它是一個字符串? – shreddish

+0

對不起,可怕的格式我不能在這個評論框中得到它 – shreddish

+1

不,這是工作正常。字符串開頭的'u'只是表示它是一個unicode字符串。我將添加一個編輯來交換事情的解析方式。 –