我正在开发一个excel工作簿.我正在使用
python脚本来操作工作簿.但有两个问题:
1)有些单元格具有整数值.当我读取该值并将读取值放入报告文件(.txt)时,它会附加.0和数字.例如.如果有值6,则在不应该这样做时给出6.0.我已经读过excel中没有任何整数.仍然,我有1000个参数,因此,我不能使用一些python函数直接将它们全部转换为整数,因为这可能转换实际上也是浮点数的值.
2)当我读取布尔值TRUE和FALSE时,它给我1和0.我想得到我在桌面上的excel工作簿中看到的任何文本.我不希望任何类似的转换.
我在python中使用xlrd进行excel操作.
请告诉我应该怎么做才能解决这个问题?注意:我的Excel工作表包含100多张,我不能用“1和0”等修改“true或false”
xlrd给你所有的数字作为浮点数,你的布尔值作为整数.你如何打印它们纯粹是一个Python问题.
我知道你已经知道哪些单元格包含布尔值. (如果不这样做,请检查单元格的ctype,如Massimo Fuccillo在answer中所示 – 有关详细信息,请参阅下面@ JohnY的评论.)您可以通过简单地打印bool(var)而不是var来打印布尔单元格为True和False:
>>> var = 1
>>> print bool(var)
True
当写入文件时,这将按照预期输出为字符串’True'(resp.’False’).
由于Excel不区分整数和浮点数,我们假设整数表示分数部分为零的任何数字.当python打印一个浮点数时,它会添加.0以保留它是浮点数的信息.
如果您使用“%g”格式化输出数字,最简单的解决方案是禁止此操作:
>>> "%g" % 6.0
'6'
但是,“%g”将默认将实数舍入为六位有效数字(尽管您可以指定不同的精度).
>>> "%g" % 2500.03
'2500.03'
>>> "%g" % 2500.003
'2500'
因此,如果您自己检测积分值并将其打印出来,则更安全:
if int(var) == var:
print int(var)
else:
print var
我建议这样做.