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 ответа:
Это одно и то же значение. Все, что отличается, - это то, как значение выводится на экран. Научная нотация, которую вы получаете, заключается в том, что на ней вызывается число
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)