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)