Получить значение int из Excel, если это int Python - PullRequest
0 голосов
/ 06 марта 2020

У меня есть следующие данные, которые я получаю из электронной таблицы Excel:

enter image description here

Как видите, есть строки, которые имеют плавает и другие, которые имеют целые. Используя мою программу ниже, если я получаю каждое значение, используя 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'

1 Ответ

0 голосов
/ 06 марта 2020

Я был на правильном пути со вторым примером кода, но я должен был убедиться, что любая строка также оценивается:

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), str):
            print(worksheet.cell_value(row, col))
        elif 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))

Результат:

Version
Name
Random Number
1.1
Smith
321
1.2
John
1234
2.1
Paul
123456
2.2
Rich
98765
2.3
Harvey
567
2.4
Jones
90909
...