2016-11-19 10 views
-2

私は文字列式を入力する関数を書いたので、式を分割して内容の一部をfloatとして使いたいと思います。私はnum1 = float(temp[0]) を書こうとしましたが、私はエラーメッセージが表示されます私は変換する文字列をフロートに変換する。 どうしたらいいですか?ここ は、私のコードの一部です:文字列をPythonで浮動小数点に変換する方法は?

def calculate_from_string(expression): 
    temp = expression.split(" ") 
    num1 = float(int(temp[0])) 
    num2 = float(int(temp[1])) 
    oop = temp[2] 
    return calculate_mathematical_expression(num1, num2, oop) 

式の型が文字列です。 私はこのように変換しようとしましたが、無効な式であるというメッセージが表示されたため、使用していたテスターでは機能しませんでした。誰も私はそれを行う方法を知っていますか?

+0

'float型(int型(A))は'それはすべての精度を失うと残念ながら完全に間違っています。たとえば、 'float(int(" 3.1415926 "))'はエラーになります。 – ForceBru

+0

あなたの表現はどのようになりますか? –

+0

とあなたが持っているエラーメッセージは何ですか? – Daniel

答えて

-1
def calculate_from_string(expression): 
    temp = expression.split(" ") 
    num1 = float(temp[0]) 
    num2 = float(temp[1]) 
    oop = temp[2] 
    return calculate_mathematical_expression(num1, num2, oop) 

float(int("123.45")) intは[0-9]+を期待するので、ValueErrorを送出していますが値エラーが発生します文字列に.を持つことになります。

第2ポイントint(4.5)を呼び出す場合は4になりますので、int関数を使用する場合は注意してください。

入力文字列に.が含まれていない場合はfloat(int(string))を使用できます。 float(int("1234"))これはあなたに与えます1234.0

+0

ユーザはすでにコードスニペットに 'float(int(temp [0]))'を持っています。 'expression'が保持している値が分かりません。この動作に何らかの理由がある可能性があります。 –

+0

最後に言及したように、temp [0]には失敗を引き起こす '.'がある可能性があります。 –

0

あなたのデータのスニペットを私たちに提供したのであれば良いでしょう。 私はあなたがやっていたかわからないが、これは動作するはずです(と、それは私のために行います):

str_expression = '1 57 34' 
num = [float(i) for i in str_expression.split()] 

あなたはまた、numpyの配列を使用できます:あなたの式は、いくつかの英数字が含まれている場合

import numpy as np 

nums = np.array(str_expression.split(), dtype=np.float) 

を正規表現を使って数字を抽出することができます。たとえば :数字を抽出するための正しい方法は次のようになり

str_expression = 'bdjsbd bdka2 23 (34 >> 4) * 2ds' 

import re 

nums = [float(i) for i in re.findall('\d+', str_expression)] 
関連する問題