문자열 목록에서 문자열을 부동 소수점 숫자로 변환하려고하면 프로그램에서 오류가 발생합니다. 목록은 CSV 텍스트 파일의 행에서 읽은 다음 목록으로 분리됩니다. 어떻게이 작업을하고 왜 잘못 되는가?float()이 문자열을 float로 변환하지 못하는 이유는 무엇입니까?
def Main():
srcf = open(bkp, 'r')
for line in srcf:
liLn = line.split(',')
... 그런 다음 함수 호출 ... 여기
def Pred_PSME(liLn):
dbh = float(liLn[6])
파일에서 라인 :
1345327,20486,"ABCO","Abies concolor","Y","Y","31.496","0.0779","19.3567",,"0.5602","0",1,"0.9268","11.8968","2.6832","6.6646","2399.256",54.47,24.15,248.47,42.19,9.16,8.16,9.23,272.27,264.11,369.30,345.15,71.80,0.00,0.00,4393.57,4106.22,3239.25,3142.07,854.30,0.00,0.00,,12.70,10.16,15.24,0.02,0.04,0.38,0.38,0.00,0.00,1.95,1.83,1.44,1.40
이 오류 메시지가 표시됩니다.
Traceback (most recent call last):
File "/home/cfws/python/error_calcs/FC_NF_PredInt_Gen8.py", line 263, in <module>
Main()
File "/home/cfws/python/error_calcs/FC_NF_PredInt_Gen8.py", line 36, in Main
li_tBQI = BQI_Calc(liLn)
File "/home/cfws/python/error_calcs/FC_NF_PredInt_Gen8.py", line 63, in BQI_Calc
di_eqns = {"PSME": Pred_PSME(liLn), "ABAM":Pred_ABAM(liLn), \
File "/home/cfws/python/error_calcs/FC_NF_PredInt_Gen8.py", line 172, in Pred_PSME
dbh = float(liLn[6])
ValueError: could not convert string to float: "31.496"
저는 Ubuntu Linux 컴퓨터에서 Python 2.7을 사용하고 있습니다.
는'liLn [6]'이 따옴표를 포함하여''31.496 ''을 포함하고있는 것처럼 보입니다. 어쩌면 당신은 그 파일들을''float()'에 전달하기 전에 제거해야합니까? 이것은 단지 추측 일뿐입니다. 또한, 내가 말할 수있는 첫 번째, SO에 오신 것을 환영합니다! :) –
왜 'csv'를 사용하지 않습니까? –
'csv' 모듈을 사용하든 안하든 관계없이 모든 값을 컨테이너 클래스 ('collections' 모듈의'namedtuple' 튜플 하위 클래스와 같은)에 넣는 것을 고려해야합니다. 예를 들어'liLn.dbh '. 그 밖의 것이 없다면 이름을 지정한 필드의 인덱스를 포함하는 정수 변수를 정의 할 수 있습니다. 예를 들어'DBH = 2 '로 설정하면'liLn [6]'대신'liLn [DBH]'를 쓸 수 있습니다. – martineau