2013-07-15 6 views
2

Есть ли способ преодолеть следующую проблему: При использовании пакета xlrd в Python значение '1' в файле excel отображается как '1.0'.Python xlrd package issue

Теперь я пишу скрипт, который должен быть в состоянии заметить разницу. Я использую эти значения в качестве индексов, поэтому «1» и «1.0» являются совершенно разными индексами, но я не могу найти способ преодолеть это вопрос.

Есть ли что-то, что я могу сделать?

Спасибо.

ответ

0

Да, это общая проблема с xlrd. Вам обычно нужно преобразовать в int, когда число действительно int типа и остальное время, в котором вы нуждаетесь в нем, как float.

Так вот то, что работает хорошо в большинстве случаев:

int_value = int(float_value) 
if float_value == int_value: 
    converted_value = int_value 
else: 
    converted_value = float_value 

Пример

>>> a = 123.0 
>>> type(a) 
<type 'float'> 
>>> b = int(a) 
>>> a == b 
True 
0

У меня была такая же проблема при анализе файлов excel с использованием xlrd. Самый простой маршрут, который я нашел, состоял в том, чтобы просто преобразовать известные значения float в int. Если у вас не возникнет ситуация, когда вы не знаете тип данных поля, которое вы разбираете.

В этой ситуации вы можете попробовать преобразовать в int и поймать ошибку. Для например:

try: 
    converted_int = int(float_number) 
except Error: 
    //log or deal with error here. 
0

использование int(some_number) для преобразования числа в integer. Документацию по функции int можно найти здесь: BIF Надеюсь, это вам поможет :)