2017-11-25 4 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을) 코드를 실행은 다음과 같습니다전화 파일의 값과 파이썬

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를 계속 : 떠있는 문자열을 변환 할 수 없습니다 : 'xx = 0.15'

나는 값을 호출하는 것이 코드를 실행할 때마다 매번이 문제에 직면하고있다. 하지만 매번 호출 방식을 변경하면 오류가 발생합니다. 어떻게 해결할 수 있습니까? 안부

+0

파일 조작이 제대로 작동합니다. 3 개의 플로트 번호 목록을 인쇄합니다. 나는 당신이 당신의 질문을 편집하는 것을 보았습니다. 실제 질문을 정말로 업데이트 했습니까? – 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 

당신은 data['xx']

print(data['xx']) 

으로 xx를 얻을 수 있습니다 또는 당신이 대신 data[variable] = numbers의 당신이 globals()[variable] = numbers를 사용할 수있는 변수

xx = data['xx'] 

에 할당 할 수 있으며 xx을 변수 수 하고 있지 않고 xx = data['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