iT邦幫忙

0

出現IronPython.Runtime.Exceptions.ValueErrorException: 'invalid literal for float(): .' 的問題!!

您好,我想要用c#讀取txt傳到python上面做運算,但是會出現IronPython.Runtime.Exceptions.ValueErrorException: 'invalid literal for float(): .' 這個error,這是我放在txt裡面的值https://ithelp.ithome.com.tw/upload/images/20181109/20110704JY8gq4Nexw.png

這是c#的程式碼

string line;

            System.IO.StreamReader file = new System.IO.StreamReader(@"C:\Users\wkj88\Desktop\teraterm.txt");
            while ((line = file.ReadToEnd()) != null)
            {
                
                ScriptRuntime pyRunTime = Python.CreateRuntime();
                dynamic obj = pyRunTime.UseFile(@"C:\Users\wkj88\hello.py");
                Console.Write(obj.welcome(line));
           

            }
            file.Close();
            Console.ReadKey();

這是python的

def welcome(rms):
    a = rms.replace('\r\n','')    
    float_lst = [float(x) for x in a]
    return sum(float_lst)

麻煩大家了!!

froce iT邦高手 1 級 ‧ 2018-11-09 09:50:44 檢舉
何不把 a print出來看看?
您好 跑出來的值是 1.12.23.34.45.56.67.78.8這個樣子

1 個回答

0
Luke
iT邦新手 4 級 ‧ 2018-11-09 10:15:50
最佳解答

ValueErrorException
從TXT 檔案取出來的值 有問題

最後''空值 ,要轉成 float,所以就丟出ValueErrorException
或者 "1.12.23.34.45.56.67.78.8" 要轉成float,
就丟出ValueErrorException

看更多先前的回應...收起先前的回應...

您好 那我應該把值改成哪種形式的呢? 因為我需要用浮點數來做運算

Luke iT邦新手 4 級 ‧ 2018-11-09 10:23:08 檢舉

我沒有寫 python

不過 ==> a = rms.replace('\r\n','')
應該是用 split 方式處理
將一串"1.12.23.34.45.56.67.78.8" 用 split
拆成
1.1
2.2
3.3
4.4...

Luke iT邦新手 4 級 ‧ 2018-11-09 10:24:48 檢舉

replace 是取代掉
EX:
"12345".replace('34','ABC') ==>"12ABC5"

您好 謝謝您的回應 我將程式碼照您說的修改了,也成功計算了,謝謝您!

froce iT邦高手 1 級 ‧ 2018-11-09 11:27:39 檢舉

其實把a print出來就應該知道問題在哪了吧?
1.12.23.34.45.56.67.78.8這整個字串沒辦法轉成float。

是的 謝謝您的解答~

我要發表回答

立即登入回答