2013-07-04 63 views
3

按照XLRD模塊的文檔,的Python xlrd模塊

row_values(rowx, start_colx=0, end_colx=None) 

「返回給定行中的單元格的值的切片」。

並給予下述的Python代碼:

import xlrd 
wb=xlrd.open_workbook("xl1.xlsx") 
sh = wb.sheet_by_index(0) 
for rownum in range(sh.nrows): 
    print sh.row_values(rownum) 

的輸出是:

[12.0, u'test.0'] 
[34.0, u'te.st'] 
[u'test123', u'12.test'] 

和EXEL文件保存以下數據:

12.0,test.0,34.0, te.st,test123,12.test

那麼,我能得到什麼類型的數據結構呢?根據輸出? 它不是一個元組,(因爲當打印一個元組類型時,沒有u'作爲字符串的前綴),那麼u'的含義是什麼? 而且它也像我們在數據結構中有兩種類型的數據 - int和「non int」。 這是真的嗎?在文檔中找不到關於此的任何信息。 謝謝!

+0

帶'u'前綴的字符串是unicode字符串。只要忽略'u'。 – Blender

+0

因此,excel文件中的每一行只包含int或字符串,對嗎? – user2162550

+0

@ user2162550查看已更新的答案 – alecxe

回答

2

row_values返回具有適當數據類型的單元值列表。列表中每個項目的數據類型取決於源Excel文件中的單元格類型。

有可能是項目只有stringfloatint數據類型,請參閱本mapping table(發現那裏Cell文檔)以獲取更多信息。

u只是表示這是一個unicode字符串。 Documentation解釋得很好。

希望有所幫助。

0

第一件事第一!
我不知道你正在使用,但根據(在寫這個答案的時間xlrd 0.9.4)的最新版本,xlrd的版本:

row_values() 

將與值返回你的行中以列表的形式。這可以通過打字進行驗證:

>>> type(sh.row_values(2)) 
<type 'list'> 

下獲得該行包括數據類型的值,您可以鍵入以下內容:

>>> sh.row(2) 

將返回你是這樣的:

[number:12.0, text:u'test.0'] 

這意味着列表中的第一項是一個數字,第二項是一個字符串或也稱爲文本。

最後在字符串前面的u表示它是Unicode編碼。請記住,xlrd模塊將嘗試在Excel工作表中的每一個數據渲染到Unicode編碼,所以你看到u 來源:Radius Of Circle
Encoding used by xlrd
Difference between row_values() & row()
Unicode in python
xlrd module official documentation

希望這將幫助你。 :)