它顯示將字串轉換為浮點數的值錯誤。我的資料檔案的其中一行看起來像這樣
100 1.2811559340137890E-003
我認為 python 在轉換時可能無法理解 E。以下是我的代碼
import math
import matplotlib.pyplot as plt
x = []
y = []
f= open('C:/Users/Dell/assignment2/error_n.dat', 'r')
for line in f:
line= line.split(' ')
x.append(line[0])
y.append(line[1])
for i in range(0,4):
x[i]=float(x[i])
x[i]=math.log(x[i])
y[i]=float(y[i])
y[i]=math.log(y[i])
plt.plot(y, x, marker = 'o', c = 'g')
plt.show()
uj5u.com熱心網友回復:
該字串1.2811559340137890E-003可以float毫無問題地轉換為。您可以在 Python shell 中輕松嘗試:
>>> s = '1.2811559340137890E-003'
>>> float(s)
0.001281155934013789
但是,您實際上是在嘗試轉換一個空字串。看看為什么:
>>> line = '100 1.2811559340137890E-003'
>>> line.split(' ')
['100', '', '', '1.2811559340137890E-003']
要解決您的問題,只需更改line.split(' ')為line.split():
>>> line.split()
['100', '1.2811559340137890E-003']
uj5u.com熱心網友回復:
我認為問題在于,當您拆分該行時,第二項(y)是""(一個空字串),這是無法轉換為數字的項。
uj5u.com熱心網友回復:
float能夠處理科學記數法。但是,根據您的描述,似乎ValueError是由于嘗試將空字串轉換為浮點數而引發的。
'100 1.2811559340137890E-003'.split(' ')
將回傳
['100', '', '', '1.2811559340137890E-003']
您可以在將字串轉換為浮點數之前檢查字串以處理此類錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/424616.html
標籤:Python matplotlib 文件处理
