我使用xlrd
來讀取excel文件中的數據。從excel文件整數變成浮動?
對於存儲在文件中的整數,假設63
,xlrd
將其解釋爲number
類型的63.0
。
爲什麼xlrd
不能識別63
作爲整數?
假設sheet.row(1)[0].value
給我們63.0
。我怎樣才能將它轉換回63
。
我使用xlrd
來讀取excel文件中的數據。從excel文件整數變成浮動?
對於存儲在文件中的整數,假設63
,xlrd
將其解釋爲number
類型的63.0
。
爲什麼xlrd
不能識別63
作爲整數?
假設sheet.row(1)[0].value
給我們63.0
。我怎樣才能將它轉換回63
。
看看documentation中的不同單元類型,似乎沒有任何整數類型的單元格,它們只是浮動。因此,即使你寫了一個整數,這也是你獲得浮動的原因。
爲浮點轉換爲整數只使用int
:
>>> int(63.0)
63
>>> int(sheet.row(1)[0].value)
63
粗糙的術語'63.0'已經是一個整數了'int(some_float)'將它的arg截斷爲一個整數,並將該值作爲int對象返回 – 2012-01-11 21:44:05
但是你知道這是浮點數還是整數嗎? – 2015-12-04 17:24:47
我想起這個寶石從xlrd
文檔:在Excel電子表格
日期
實際上,沒有這樣的事情。你有什麼是浮點數 和虔誠的希望。
整數也是如此。也許減去虔誠的希望。
有趣的點。 – 2012-01-11 20:49:35
由jcollado給出的答案是正常的,如果你在excel表中的所有條目都是整數的數字。 但是,假設你有一個數是浮點數,你可以隨時把檢查條件一樣 -
if i==int(i): //checking for the integer:
print int(i) // solving your problem and printing the integer
else:
print i //printing the float if present
希望對您有所幫助:)
感謝minocha。 – 2012-01-11 21:09:16
np @TerryLiYifeng :) – minocha 2012-01-11 23:26:35
Excel將所有編號爲浮動。一般來說,它並不在乎your_number % 1 == 0.0
是否爲真。
示例:A1 = 63.0, B1 = 63, C1 = INT(A1), A2 = TYPE(A1), B2 = TYPE(B1), C2 = TYPE(C1)
您會發現TYPE()
在每種情況下都返回1。
從Excel的幫助:
If value is TYPE returns
Number 1
Text 2
Logical value 4
Error value 16
Array 64
xlrd
報告其發現。在暴露給你之前,xlrd
不會破壞它的輸入。將一列從(62.9, 63.0, 63.1, etc)
轉換爲(62.9, 63, 63.1, etc)
對我來說似乎毫無意義地浪費了CPU時間。
+1。它不會比直接從xlrd的作者那裏聽到更好。 – 2012-01-11 21:31:32
我寫過代碼,它試圖將數字轉換爲字符串,因爲它們是由Excel顯示的。這種方法至少對逗號後的整數和兩位數的數字起作用。它也適用於其他格式。
的想法,截圖和代碼在這裏:http://uucode.com/blog/2013/10/22/using-xlrd-and-formatting-excel-numbers/
前綴添加撇號保存在Excel工作表中的數字。通過這樣做,整數可以作爲整數輸入,但不能作爲浮點數輸入。
它在爲我工作沒有任何問題。
雖然這是一箇舊的答案,但它沒有解決問題。這個問題涉及到xlrd,以及它解析數字的方式。 – Joundill 2018-03-05 22:20:05
它只是int(yourfloat),不是嗎? http://docs.python.org/library/functions.html#int。我不會作爲回答發佈 - 我覺得我可能會侮辱你,可能錯過了一些東西。 – stackuser10210 2012-01-11 19:52:08
@ stackuser10210我想知道爲什麼電子表格中的整數63變爲63.0。 – 2012-01-11 19:54:13
不知道。我對xlrd不熟悉,我從來沒有做過類似的事情。如果他們真的是excel中的整數(即,A1 = 63.0,B1 = Int(A1),並且你從B1中獲得63.0,那麼我可以理解這個問題,對不起,我沒有答案 – stackuser10210 2012-01-11 20:01:31