2017-11-25 136 views
0
import numpy as np 
from scipy import interpolate 
from scipy.interpolate import griddata 
import itertools 
from scipy.optimize import curve_fit 
import matplotlib.pyplot as plt 
import scipy.interpolate 
import numpy as np, pylab 
import os 
from numpy import split 


with open('zzz.txt') as fp: 
    for line in fp: 
     line = (line.split('=')[1].strip().split(',')) 
     line = list(map(float, line)) 
     print (line) 


tck = interpolate.bisplrep(xx, yy, zz, s=0) 

def givemeTL(X2,Y2): 
    return interpolate.bisplev(X2,Y2,tck) 

文件(zzz.txt)包括:呼叫值,並與Python運行代碼

xx = 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55 
yy = 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09 
zz = 0.75, 0.81, 0.83, 1.00, 0.92, 0.91, 0.745, 0.805, 0.82 

我不斷收到錯誤 ValueError異常:無法將字符串轉換爲float:'xx = 0.15'

我每次都遇到這個問題,調用這些值是運行代碼的一部分。但每次我改變調用方法時,都會給我錯誤。 我該如何解決它? 問候

+0

文件操作適用於我:打印三個浮點數列表。我看到你編輯了你的問題。你真的更新了你的實際問題嗎? – cmertayak

+0

請不要更改有問題的代碼 - 現在我們的答案對您的問題沒有意義。問題結束時應添加新代碼。 – furas

回答

0

我不會創建變量xx但我將創建字典,data['xx'] - 這是首選的方法。

data = {} # dict for data from file 

with open('zzz.txt') as fp: 

    for line in fp: 
     variable, numbers = line.split('=') 

     variable = variable.strip() 

     numbers = numbers.split(',') 
     numbers = list(map(float, numbers)) 

     data[variable] = numbers 

你可以得到xxdata['xx']

print(data['xx']) 

,或者你可以分配給變量

xx = data['xx'] 

而不是data[variable] = numbers你可以使用globals()[variable] = numbers,你會得到可變xx沒有做但人們說這不是首選的方法。

+0

我每次都遇到這個問題,調用這些值是運行代碼的一部分。我不想保留代碼內的值。但是每次我從一個文件中調用它時,它給出的xx並沒有被定義 – user8670370

+0

它接受你的代碼期望變量'xx',但是你沒有創建它。您必須從文件讀取數據並將其分配給變量'xx' - 即。 'xx = data ['xx']'。 – furas

+0

非常感謝您的幫助 – user8670370

0
data = {} 
with open('zzz.txt') as fp: 
    for line in fp: 
     var, values = list(map(str.strip, line.split('='))) 
     values = list(map(float, values.split(','))) 
     data[var] = values 
+0

謝謝你的回覆,我得到了這個錯誤,NameError:name'xx'沒有被定義。 – user8670370

+0

@ user8670370此方法不會創建變量'xx',它只能讀取每一行並將其轉換爲您可以分配給不同變量的列表。你可以使用列表或字典來保持比最後一行更多的內容。 – furas

+0

當然我沒有正確閱讀這個問題當然,它可以用鍵作爲'xx'和值作爲值列表 – armak