[英]How to extract values from excel sheet where few rows are formatted as number but few are text in Python
我有一张 excel 工作表,其中一些行的格式设置为number
但一些行的格式设置为text
。 我有 python 脚本,它读取每一行并将其转换为 json 并处理它。 Excel 表如下所示:
在上图中,我们可以看到第 98、99、100、101、102 行第 1 列中的值被格式化为文本,但第 103、104 行第 1 列中的值被格式化为数字。 我有以下 python 代码来访问它:
import xlrd
wb = xlrd.open_workbook("file.xlsx")
sheet = wb.sheet_by_index(4)
for i in range(4, 185): #from 5th row to 186th row
data = dict()
print(str(sheet.cell_value(i, 0)))
data['ProductNumber'] = str(sheet.cell_value(i, 0))
我必须将值保存在str
中,因此我使用了str
。 但我得到以下第 98 到 104 行的结果
ROW Value Extracted
98 907
99 088
100 019
101 274
102 905
103 290.0
104 971.0
上面的结果对于第 98 到 102 行看起来很好,但对于 103、104 行它是错误的。 它应该只有290 & 971
。 为此,我在str
之前放了一个int
,如下所示:
str(int(sheet.cell_value(i, 0)))
现在使用上面的结果如下所示:
ROW Value Extracted
98 907
99 88
100 19
101 274
102 905
103 290
104 971
这又是错误的,因为第 99 和 100 行的值应该是088
& 019
而不是88
& 19
。 我该如何解决这个问题。 有没有我可以使用的支票可以帮助我做出决定。 我正在使用xlrd python 模块。
对于您的示例数据集,这将起作用:
str(int(sheet.cell_value(i,0))).zfill(3)
使用 pandas 是另一种选择,请使用以下代码进行转换。 变量 strJson 在此处保存完整的 Json 字符串,如果您在数据中添加小数点,它将自动获取它,如果没有十进制值,则相同的值将添加到 json。
import pandas
strDataDump=pandas.read_excel('C:\Temp\Python Projects\data.xlsx', sheet_name='Sheet1')
strJson = strDataDump.to_json()
print('JSON Result:\n', strJson)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.