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