2017-05-06 8 views
1

私はPythonにいくつかの問題があります。私は検索してファイルから値を収集し、配列に入れて後で操作できるようにするPythonコードを作成しています。ファイルへの書き込み、プロット、計算などがあります。配列は私がaの値の配列とbの値の配列を作成したいファイルから値を配列に変換するPythonコード

a_array = [1.2, 2.2, 6.5] 
    b_array = [1.0e-5, 2.5e-4] 

だろう

file 1 (text file) 
    a = 1.2 
    a = 2.2 
    a = 6.5 

file 2 (text file) 
    b = 1.0 E-5 
    b = 2.5 E-4 

を次のようにファイルがあります。

['1.2'] 
['1.2', '2.2'] 
['1.2', '2.2', '6.5'] 

3行目は、私が欲しいものを正確にではなく、他の二行:私は、それは、次のプリントアウトfile_1

a_array = [] 
for line in open (file_1): # it's a text file, was having issue with the format on this site 
    if line.startswith("a ="): 
    a = line[3:] # this to print from the 3rd value 
    print a 
    a_array.append(a)  
    print a_array 

のために、この次のコードを書きました。

+2

。また、 'numpy.array'ではなく' list'を持っていて、 'float'ではなく' str'というデータ型を持っていることに気づくでしょう。最後の行でさえあなたが望むものではありません。 – Michael

+1

プログラミングの基本を学ぶ必要があるような気がします。今のところこのプロジェクトを残して、はるかに簡単なものを作成してください。 – Olian04

+0

インデントが問題でした:Pさんはあなたのコメントの後にそれに気づくのに私を少し時間がかかりました。ありがとう、たくさんのyall。プログラミングは継続的な学習です。私はPythonで初めてです。 – PythonNoob

答えて

0

マイケルはコメントで正しいですが、あなたはそれそうディスプレイ各ループ、ループ内forprintコマンドを持っていますが、最後に、a_arra yは唯一、最終的に表示される値になります。

さらに興味深いのは、3行目(['1.2', '2.2', '6.5']、文字列のリスト)から望むもの(a_array = [1.2, 2.2, 6.5]、数字のリスト)を取得する方法です。

数字がすべて数字であることがわかっている場合は、a_array.append(float(a))を使用できますが、科学的表記を使用してbという問題が発生します。幸いにも、Pythonはbのような科学的表記法を転記できますが、スペースはありません。これを行うには、replaceを使用して変換前にすべてのスペースを削除します。この方法は、同様に(Pythonの3.5.2で書かれた)aのために働くので、スペースがない場合、それは問題ではありません:

あなたがループ内で `print`コマンドを持っているためだ
a_array = [] 
b_array = [] 
for line in open (file_1): # didn't correct formatting for opening text file 
    if line.startswith("a="):   
     a=line[3:] #this to print from the 3rd value 
     a_array.append(float(a.replace(' ','')))  
    elif line.startswith("b="): 
     b=line[3:] 
     b_array.append(float(b.replace(' ',''))) 
+0

ご協力いただきありがとうございます。インデントが私の問題だったことに気づくまでにはしばらく時間がかかりました。ありがとうございました :) – PythonNoob

関連する問題