2017-03-03 10 views
0

解決方法は簡単ですが、何とか通常のfloatは機能しません。float - Python 3を使用して文字列を変換できません

output = open('output.txt', 'wt') 
with open('input.txt', 'r') as file: 
    file = file.readlines() 
    for x in range(0,len(file)): 
     if file[x][0:6] == 'NUMBER': 
      print(file[x][11:18]) 
      float(file[x][11:18]) 

プリントは、 を「11111」を私を与えるだろうが、フロートは私がとValueErrorをエラー与える:float型に文字列を変換できませんでした: ここで何が起こっています。私は何らかの数学演算を行うために浮動小数点数として必要です。

更新。私はそれが空のスペースを変換しようとしているからだと思います。最初の行でこのエラーが発生します。 float( '')はエラーを返します。

NUMBER 
* 
NUMBER 111111111111111111111 
+0

どの言語がそれですか?タグを付けてください。 –

+0

ありがとうございました。申し訳ありません、私の初めての投稿です。 – kacangputih

+0

私のPythonのエラーメッセージには、変換できなかった文字列の 'repr'が含まれています。それが印刷されない場合は 'print(repr(file [x] [11:18]))'を実行して 'repr'を見てください。文字列に埋め込まれたいくつかの非印字文字(例えば '\ 0 ')かもしれません。 'float'は、先頭と末尾の空白を無視しますが、任意の非数値テキストや埋め込み空白を無視します。 – ShadowRanger

答えて

1

@Bijoyはコメントで与えたアイデアのバージョン:問題は'NUMBER'を以下の文字列がときどき空であることであり、そのようなケースは常にフロート0.0にマップする必要がある場合は、あなたがトラップエラーを使用することができますfloat()の特殊目的のバージョンを記述します。

def getfloat(s): 
    try: 
     return float(s) 
    except ValueError: 
     return 0.0 

これはあなたの状況のた​​めに働くだろう、しかし反直感的な行動などを持っていますgetfloat("hello world") == 0.0

+0

ありがとうございます。これは私が探しているものです。 – kacangputih

関連する問題