xlrd 将数字读取为字符串
xlrd read number as string
我试图从 xls 文件中读取一个长数字 (6425871003976),但 python 在将其读取为数字而不是字符串 (6.42587100398e+12) 之前一直在中继它。有什么方法可以直接将它作为字符串读取,即使在 xls 文件中它是一个数字?
values = sheet.row_values(rownum)
在 values 中它显示正确 (6425871003976.0) 但是当我尝试 values[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(' \t\n\r')
这是一个例子,它带来了一个单元格的值(在你的例子中它是一个 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)
这是相同的值。唯一不同的是如何将值打印到屏幕上。你得到的科学记数法是因为打印数字 str
被调用了。当您打印值列表时,列表的内部 __str__
方法对其每个元素调用 repr
。请尝试 print(repr(values[0]))
。
使用print "%d" %(values[0])
%d 用于打印整数值
我试图从 xls 文件中读取一个长数字 (6425871003976),但 python 在将其读取为数字而不是字符串 (6.42587100398e+12) 之前一直在中继它。有什么方法可以直接将它作为字符串读取,即使在 xls 文件中它是一个数字?
values = sheet.row_values(rownum)
在 values 中它显示正确 (6425871003976.0) 但是当我尝试 values[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(' \t\n\r')
这是一个例子,它带来了一个单元格的值(在你的例子中它是一个 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)
这是相同的值。唯一不同的是如何将值打印到屏幕上。你得到的科学记数法是因为打印数字 str
被调用了。当您打印值列表时,列表的内部 __str__
方法对其每个元素调用 repr
。请尝试 print(repr(values[0]))
。
使用print "%d" %(values[0])
%d 用于打印整数值