xlrd считывает число как строку


Я пытаюсь прочитать из файла xls длинное число (6425871003976), но python продолжает транкинг его, прежде чем он прочитает его как число, а не строку (6.42587100398 e+12). Есть ли какой-либо метод, чтобы прочитать его непосредственно как строку, даже если в файле xls это число?

values = sheet.row_values(rownum)

В значениях он появляется правильно (6425871003976.0), но когда я пробую значения[0], он уже переключается на неправильное значение.

Решение:

Это было мое решение с помощью repr ():

if type(values[1]) is float:  
    code_str = repr(values[1]).split(".")[0]
else:
    code_str = values[1]
product_code = code_str.strip(' tnr')
3 5

3 ответа:

Это одно и то же значение. Все, что отличается, - это то, как значение выводится на экран. Научная нотация, которую вы получаете, заключается в том, что на ней вызывается число str. При печати списка значений внутренний метод __str__ списка вызывает repr для каждого из его элементов. Попробуйте print(repr(values[0])) вместо этого.

Это пример, который приносит значение ячейки (в вашем случае это int), вам нужно преобразовать его в строку с помощью функции str

from openpyxl import load_workbook
wb = load_workbook(filename='xls.xlsx', read_only=True)
ws = wb['Sheet1']
for row in ws.rows:
    for cell in row:
        cell_str=str(cell.value)

Использовать print "%d" %(values[0])

%d используется для печати целых чисел