繁体   English   中英

如何从 excel 工作表中提取值,其中几行格式化为数字,但 Python 中的文本很少

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM