我正在读取来自.txt文件的数据,如下所示:
Time Date Inlet Gas skin #1 SKIN #2 OUT GAS
°C °C °C °C
15:28:55 4/11/2015 2.826471e+001 2.217617e+001 2.408844e+001 2.771613e+001
当我阅读它时,我会花时间和日期将它们组合成一个strptime对象并组成一个新的dict。我还从第一行读取标签并将其用作新词典的键。我稍后在脚本中遇到错误,该错误表示要对值进行舍入,需要浮点数。当我标记“float(a)for a”行时,变量资源管理器告诉我a的“type”是一个string_,它的值是“2.826471e + 001”(引用我的)。我尝试了ast eval选项但它没有用。
dict_labels = [label for label in labels if not label == 'Time' and not label == 'Date' and not label == '']
current_array =np.array(current_array)
temp_dict = {}
temp_dict['Dates_Times'] = [datetime.strptime(i + ' ' + j, dateformat) for i,j in zip(current_array[:][:,labels.index('Date')], current_array[:][:,labels.index('Time')])]
for label in dict_labels:
temp_dict[label] = [float(a) for a in current_array[:][:,labels.index(label)]]
答案 0 :(得分:1)
一种选择是分割字符串,然后自己计算出数学。
即。 2.826471e+001
等于2.826471 * 10^1
所以使用代码:
temp_dict[label] = [float(a.split('e+')[0])*pow(10, int(a.split('e+')[1])) for a in current_array[:][:,labels.index(label)]]
答案 1 :(得分:0)
还有一些其他问题,在Python 2和3中都可以轻松地转换该字符串。
>>> float("2.826471e+001")
28.26471