Целые числа из файлов excel становятся плавающими?

Я использую xlrd для чтения данных из файлов excel.

Для целых чисел, хранящихся в файлах, скажем 63 , xlrd интерпретирует его как xlrd number типа.

  • Обслуживание больших файлов (с большими нагрузками) в Django
  • Python: проверьте правильность написания слова
  • Запуск сценария Python при запуске в Ubuntu
  • Морские палитры - предотвращать рециркуляцию цветов
  • Автоматизация / сценарии Telnet
  • Сельдерей - расписание периодических заданий, начиная с определенного времени
  • Почему xlrd не xlrd распознать 63 как целое число?

    Предположим, что sheet.row(1)[0].value дает нам 63.0 . Как я могу преобразовать его обратно в 63 .

  • Вычислять попарное расстояние в партии без репликации тензора в Tensorflow?
  • Каковы различия между Pandas и NumPy + SciPy в Python?
  • Ошибка Python: не удалось прочитать из RWops
  • Как определить соответствующий формат strftime из строки даты?
  • setuptools и pip: выбор минимальной и полной установки
  • Параметры настройки для неявной модели факторизации матриц pyspark.ml через pyspark.ml CrossValidator
  • 6 Solutions collect form web for “Целые числа из файлов excel становятся плавающими?”

    Если посмотреть на различные типы ячеек в документации , кажется, что для ячеек нет целочисленного типа, они просто плавают. Следовательно, именно по этой причине вы возвращаете float, даже когда вы написали целое число.

    Чтобы преобразовать float в целое число, просто используйте int :

     >>> int(63.0) 63 >>> int(sheet.row(1)[0].value) 63 

    Excel обрабатывает все числа как float. В общем, неважно, your_number % 1 == 0.0 ли 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 не xlrd свой вход, прежде чем подвергать его вам. Преобразование столбца из (62.9, 63.0, 63.1, etc) (62.9, 63, 63.1, etc) Будет представлять собой бессмысленную трату времени процессора для меня.

    Ответ 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 

    Надеюсь, вы найдете это полезным 🙂

    Мне напоминают об этом камне из xlrd docs:

    Даты в таблицах Excel

    На самом деле таких вещей нет. У вас есть числа с плавающей запятой и благочестивая надежда.

    То же самое относится к целым числам. Возможно, минус благочестивая надежда.

    Я написал код, который пытается преобразовать числа в строки, поскольку они отображаются в Excel. Подход работает, по крайней мере, для целых чисел и чисел с двумя цифрами после запятой. Он должен работать и для многих других форматов.

    Идея, скриншоты и код здесь: http://uucode.com/blog/2013/10/22/using-xlrd-and-formatting-excel-numbers/

    Добавьте Apostrophe в качестве префикса к номерам, сохраненным в листе Excel. Делая это, целые числа могут быть импортированы как целые числа, но не как числа с плавающей запятой.

    Это работало для меня без каких-либо проблем.

    Python - лучший язык программирования в мире.