【发布时间】:2015-02-08 21:25:25
【问题描述】:
我正在尝试从 Excel 电子表格中提取邮政编码并将它们作为字符串加载到列表中。
import xlrd
BIL = xlrd.open_workbook(r"C:\Temp\Stores.xls)
Worksheet = BIL.sheet_by_name("Open_Locations")
ZIPs = []
for record in Worksheet.col(17):
if record.value == "Zip":
pass
else:
ZIPs.append(record.value)
不幸的是,这个 Excel 工作簿是由其他人管理的,所以我不能简单地将 Excel 电子表格中包含邮政编码的字段转换为文本来解决我的问题。此外,不管你信不信,这个 Excel 电子表格也被一些商业智能系统使用。因此,将该字段从数字更改为字符串可能会导致利用此工作簿的其他工作流出现问题,我不知道。
我发现,当我按原样打印数字而不先转换为整数或字符串时,我当然会得到一堆浮点数。我预料到了,因为 Excel 将数字存储为浮点数。
>>>Zips
[u'06405',
04650.0,
10017.0,
71055.0,
70801.0]
我没想到的是,当我将这些浮点数转换为 int 以摆脱十进制值时,然后将其结果转换为字符串,结果是任何作为邮政编码一部分的前导或尾随零值被截断。
import xlrd
BIL = xlrd.open_workbook(r"C:\Temp\Stores.xls)
Worksheet = BIL.sheet_by_name("Open_Locations")
ZIPs = []
for record in Worksheet.col(17):
if record.value == "Zip":
pass
else:
ZIPs.append(str(int(record.value)))
>>>Zips
['6405',
'465',
'10017',
'71055',
'70801']
如何将这些邮政编码转换为字符串而不丢弃前导零或尾随零,或者在截断之前确定值上的前导零和尾随零的数量并酌情附加它们?
【问题讨论】:
标签: string xlrd zipcode floating-point-conversion