У меня есть следующие данные, которые я получаю из электронной таблицы Excel:
Как видите, есть строки, которые имеют плавает и другие, которые имеют целые. Используя мою программу ниже, если я получаю каждое значение, используя worksheet.cell_value(row, col)
, то каждый int извлекается как число с плавающей запятой. Например, 321 в столбце Случайное число извлекается как 321.0.
Я не хочу иметь десятичные точки, если число не включает его. Я видел пару примеров в Интернете, в частности этот один, но я не смог найти ни одного ответа.
Пока что я получил:
import xlrd
workbook = xlrd.open_workbook("demo.xlsx")
worksheet = workbook.sheet_by_name('Sheet1')
num_rows = worksheet.nrows
num_cols = worksheet.ncols
for row in range(num_rows):
for col in range(num_cols):
if isinstance(worksheet.cell_value(row, col), float):
print(worksheet.cell_value(row, col))
elif isinstance(worksheet.cell_value(row, col), int):
print(int(worksheet.cell_value(row, col)))
else:
print(worksheet.cell_value(row, col))
Но это возвращает целые числа с десятичными точками:
Version
Name
Random Number
1.1
Smith
321.0
1.2
John
1234.0
2.1
Paul
123456.0
2.2
Rich
98765.0
2.3
Harvey
567.0
2.4
Jones
90909.0
В качестве альтернативы я попытался:
import xlrd
workbook = xlrd.open_workbook("demo.xlsx")
worksheet = workbook.sheet_by_name('Sheet1')
num_rows = worksheet.nrows
num_cols = worksheet.ncols
for row in range(num_rows):
for col in range(num_cols):
if worksheet.cell_value(row, col) == int(worksheet.cell_value(row, col)):
print(int(worksheet.cell_value(row, col)))
else:
print(worksheet.cell_value(row, col))
Но я получаю ошибку:
ValueError: недопустимый литерал для int () с основанием 10: 'Version'