从 Excel 中检索 int 值,如果它是一个 int Python
Retrieve int value from Excel if it is an int Python
我从 Excel 电子表格中获取了以下数据:
如您所见,有些行包含浮点数,有些行包含整数。
使用下面的程序,如果我使用 worksheet.cell_value(row, col)
检索每个值,那么每个 int 都将作为浮点数检索。例如,随机数列中的 321 被检索为 321.0.
如果数字不包含小数点,我不想有小数点。我在网上看到了几个例子,特别是 this 一个,但我没有找到任何答案。
到目前为止,我有:
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))
但是这个returns带小数点的整数:
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: invalid literal for int() with base 10: 'Version'
我在第二个代码示例中走在了正确的轨道上,但我必须确保任何字符串也被评估:
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
我从 Excel 电子表格中获取了以下数据:
如您所见,有些行包含浮点数,有些行包含整数。
使用下面的程序,如果我使用 worksheet.cell_value(row, col)
检索每个值,那么每个 int 都将作为浮点数检索。例如,随机数列中的 321 被检索为 321.0.
如果数字不包含小数点,我不想有小数点。我在网上看到了几个例子,特别是 this 一个,但我没有找到任何答案。
到目前为止,我有:
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))
但是这个returns带小数点的整数:
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: invalid literal for int() with base 10: 'Version'
我在第二个代码示例中走在了正确的轨道上,但我必须确保任何字符串也被评估:
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