excel文件中的整数变成了浮点数?

Ter*_* Li 15 python xlrd

我用来xlrd从excel文件中读取数据.

对于存储在文件中的整数,比方说63,将其xlrd解释为63.0类型number.

为什么不能xlrd识别63为整数?

假设sheet.row(1)[0].value给了我们63.0.我怎样才能将它转换回来63.

Joh*_*hin 25

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 
Run Code Online (Sandbox Code Playgroud)

xlrd报告它发现的内容.xlrd在将它暴露给你之前不会破坏它的输入.将列转换为(62.9, 63.0, 63.1, etc)(62.9, 63, 63.1, etc)我来说似乎是毫无意义地浪费CPU时间.

  • +1.它没有比直接从`xlrd`的作者那里听到的更好. (6认同)

jco*_*ado 12

查看文档中的不同单元格类型,似乎单元格没有任何整数类型,它们只是浮点数.因此,即使你写了一个整数,这也是你得到浮动的原因.

要将float转换为整数,只需使用int:

>>> int(63.0)
63
>>> int(sheet.row(1)[0].value)
63
Run Code Online (Sandbox Code Playgroud)

  • 但是你怎么知道它是浮点数还是整数呢? (4认同)

min*_*cha 11

如果excel表中的所有条目都是整数,则jcollado给出的答案是正确的.但假设你有一个浮点数,你可以随时设置检查条件,如 -

    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
Run Code Online (Sandbox Code Playgroud)

希望你觉得这个有用 :)


Ste*_*ski 6

我想起了xlrd文档中的这个宝石:

Excel 电子表格中的日期

事实上,不存在这样的事情。你所拥有的是浮点数和虔诚的希望。

整数也是如此。也许减去虔诚的希望。