处理小数位/避免使用科学记法Python

时间:2017-04-10 14:09:33

标签: python regex pandas

我有两个字符串

string1 = '1000000000.0'
string2 = '1000000000.09'
from decimal import Decimal
Decimal(string1).normalize() 

给出

Decimal('1E+9')

Decimal(string2).normalize()

给出

Decimal('1000000000.09')

我真的想要的就像上面那样。

那么string1如何可以作为十进制(1000000000)而不是十进制(' 1E + 9') 和string2为十进制(' 1000000000.09'),我目前进入。!!

2 个答案:

答案 0 :(得分:0)

您可能想要使用字符串格式。这使您可以非常精确地控制数据的表示方式 - 请参阅documentation on str.format了解完整(以及初学者的一点复杂)说明。

回答您的具体要求:

from decimal import Decimal

string1 = '1000000000.0'
string2 = '1000000000.09'
fstr = '{:10.0f} {:12.2f}'

print(fstr.format(Decimal(string1), Decimal(string2)))

您应该找到输出

1000000000 1000000000.09

为了让人们更容易理解您的输出,您可能希望将fstr更改为'{:10,.0f} {:12,.2f}' - 逗号表示将整数部分拆分为以逗号分隔的三个组,并且你应该看到输出

1,000,000,000 1,000,000,000.09

答案 1 :(得分:0)

此功能可以理解

def DecimalHandler(string):

if re.match('^\d*[.]?\d*$',string):

    Frst = string.split('.')[0]
    try:
        secnd = string.split('.')[1]

        secnd = re.sub('[0]+$','',secnd)
        if secnd != '' :
            secnd = '.'+secnd
        else:
            secnd = secnd

    except IndexError:
        secnd = ''


    OutPut_Str = Frst+secnd
else:
    print("...")
    OutPut_Str = string

return(OutPut_Str)