मेरा प्रोग्राम मुझे एक त्रुटि दे रहा है जब यह तारों की सूची से स्ट्रिंग को एक फ़्लोटिंग पॉइंट नंबर में कनवर्ट करने का प्रयास करता है। सूची को CSV टेक्स्ट फ़ाइल में एक पंक्ति से पढ़ा जाता है और फिर सूची में विभाजित किया जाता है। मैं यह काम कैसे कर सकता हूं और यह गलत क्यों हो रहा है?फ़्लोट() मेरी स्ट्रिंग को एक फ्लोट में बदलने में विफल क्यों होता है?
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"
मैं एक उबंटू लिनक्स कंप्यूटर पर पायथन 2.7 का उपयोग कर रहा हूं।
उद्धरण समेत 'liLn [6]' '31.496" 'जैसा दिखता है, शायद आपको इसे 'फ्लोट()' में पास करने से पहले उन्हें बंद करना चाहिए? यह केवल एक अनुमान है। भी, मुझे सबसे पहले कहने दो, एसओ में आपका स्वागत है! :) –
आप 'csv' का उपयोग क्यों नहीं कर रहे हैं? –
भले ही आप 'csv' मॉड्यूल का उपयोग करते हों या नहीं, आपको इन सभी मानों को एक कंटेनर क्लास (जैसे' संग्रह 'मॉड्यूल में' नामांकित 'tuple subclass में डालने पर विचार करना चाहिए ताकि उन्हें आसान और अधिक पठनीय, उदाहरण के लिए 'liLn.dbh'। यदि कुछ और नहीं है, तो आप पूर्णांक चर को परिभाषित कर सकते हैं जिसमें उनके नाम का फ़ील्ड शामिल है। उदाहरण के लिए 'डीबीएच = 2' सेटिंग आपको 'liLn [6]' के बजाय 'liLn [DBH]' लिखने देती है। – martineau