python将科学计数法型数字的字符串转化为数字

前言

之前由于需要读取一些数据集里的信息,而这些信息是存为txt文件,读取之后是字符串。数据本来全部都是数字。只不过用科学计数法表示的,使用int,float强转会报错。在网上稍微查了一下,也没找到啥好办法。后来,刚好看到一本书,提到了一个函数。转化起来很简单。

法一

eval('1.23456789e+5')

输出:

123456.789

法二(刚开始的笨做法)

按照科学计数法的格式进行字符串分割,分成底数和指数部分,变为数字后再相乘。

def str2num(string):

    try:
        # 如果是按照科学计数法记录的字符串
        temp = string.split('+')

        base, index = temp[0], temp[1]
        base = base.split('e')[0]

        return float(base)*(10**int(index))
    except:
        # 如果不是科学计数法记录的,而是直接记的数,如100这样偶尔出现的不规范数据
        return float(string)

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注