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)