使用Python去除小数点后面多余的0问题

使用Python去除小数点后面多余的0问题

目录

Python去除小数点后面多余的0

Python去掉数字前面的0

Python去除小数点后面多余的0

最近在用Python 写导入数据的脚本。百度 必应搜了好多,都没有一个完美解决的。

在这里还是要吐槽一下百度对于这些真的很垃圾。

后来FQ谷歌了一下,第一个词条出来就找到办法了。

这里我搬过来整理一下,以及使用时候可能遇到的问题。希望对看到这篇文章的读者有用

首先引入头文件

from decimal import Decimal

举个例子

数字 100.2000 

第一次 这么使用 Decimal('100.2000').normalize() 得到的结果 100.2  是想要的结果。

可是 normalize() 有个问题,如果是100.00000 同样  Decimal('100.0000').normalize()得到的结果就是1E+2

那么这种情况怎么办呢,就是换个方法 使用 “ to_integral ”,像这样:Decimal('100.000').to_integral() 得到结果是100,这才是想要的结果。 

那怎么才能更好的两种兼容呢,可以先做一个判断 在去除多余0之后 是否相等:

>>> Decimal('100.2000') == Decimal('100.2000').to_integral() False >>> Decimal('100.0000') == Decimal('100.0000').to_integral() True

根据这个判断 可以自己写一个function

def remove_exponent(num):     return num.to_integral() if num == num.to_integral() else num.normalize()

最后调用这个function 这里同样举上面几个例子得到的结果

>>> remove_exponent(Decimal('100.2000')) Decimal('100.2') >>> remove_exponent(Decimal('100.0000')) Decimal('100') >>> remove_exponent(Decimal('0.2000')) Decimal('0.2')

这里输出是Decimal 类型 是因为 调用的方法里面就是这个类型的。可以直接当float用,如果想要换成string类型  就在用str() 包一下上面得到的结果就行啦,这个就不解释了 

这样就解决标题所说的去除小数点后面多余的0的问题了

Python去掉数字前面的0

有时候文件的编号是在前面自动补0生成的,而当我们需要读取这些文件名对应的编号时,前面的0会给判断语句造成麻烦,那么如何将前面的0去掉呢?

因为Python默认在转换成字符串时忽略前面的0,因此可以通过格式转换的方法实现去0:

>>> str(000001) '1' >>> int(str(000001)) 1

以上为个人经验,希望能给大家一个参考,也希望大家多多支持易知道(ezd.cc)。

推荐阅读