2017-03-23 2 views
1

私は次のようになりますファイル(たとえば、「myfileの」)があります。Python:混在した文字や浮動小数点数の行があります:浮動小数点数を加算する方法は?

4 
1.0 0 0 
0.0 1.0 0.0 
0.0 0.0 1.0 
C 0.0 0.0 -0.5 
C 0.0 0.0 0.82 
H 0.0 0.9 -1.0 
H 0.0 -0.9 -1.0 

(Cのような文字である何行かを判断する(4ここでは)最初の数またはをH)。

私がしようとしているのは、文字の後の数字を読み、数学をすることです。この場合、5〜6行目、5〜7行目、5〜8行目(そして6〜7行目と6〜8行目、7〜8行目の間の距離)を計算します。したがって、このような何か:

5と6:(0.0から0.0)^ 2 +(0.0から0.0)^ 2 +(-0.5 - 0.82)^ 2

5と7:(0.0から0.0)^2 +(0.0~0.9)^ 2 +(-0.5-1.0)^ 2

などとなる。

これを行うには、行を読み込んだ後、文字を無視して数値を浮動小数点数に変換する必要があることを意味します。誰にどのようにこれを行うための任意の提案がありますか?非常に暫定的に私がしている:しかし、私は、それらを比較するためにフロートに番号を取得する方法を見つけ出す必要があり

['C  0.0 0.0 -0.5\n', 'C  0.0 0.0 0.8\n', 'H  0.000000 0.9 -1.0\n', 'H  0.000000 -0.9 -1.0\n'] 

with open("myfile.txt", "r") as inputs: 
    print lines[4: sum(1 for _ in inputs)] 

これは私の文字列としてこれらの4行ごとにアクセスすることができます。

すべてのポインタは非常に感謝/ upvotedでしょう。ありがとうございました!

答えて

0

多分このような何か:中

lines = ['C  0.0 0.0 -0.5\n', 'C  0.0 0.0 0.8\n', 'H  0.000000 0.9 -1.0\n', 'H  0.000000 -0.9 -1.0\n'] 

new_lines = [[float(x) for x in line.split()[1:]] for line in lines] 

print(new_lines) 

結果:行の

[[0.0, 0.0, -0.5], [0.0, 0.0, 0.8], [0.0, 0.9, -1.0], [0.0, -0.9, -1.0]] 

基本的に分割要素(引数なしで、それは空の文字列を避けるために、すべての余分な空白や改行をトリミングして)と落下最初のものはfloatではないためです。