2017-05-06 79 views
1

我遇到了一些Python問題。我創建了一個Python代碼,可以從文件中搜索和收集值,並將它們放在一個數組中,以便稍後操作:包括寫入文件,繪圖或執行一些計算。該文件如下:將代碼從文件轉換爲數組的Python代碼

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 

其中數組是

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

我想創建的a值的數組併爲b值的數組。我寫了這以下的代碼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 

它打印出以下幾點:

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

第三行是正是我想要的,但不是其他兩行。

+2

這是因爲你有內循環'print'命令。還要注意,你有一個'list',而不是'numpy.array',並且你有'str'數據類型,而不是'float',所以即使最後一行不是_exactly_你想要的。 – Michael

+1

我覺得你需要學習一些編程基礎知識。現在就離開這個項目,首先創建更簡單的東西。 – Olian04

+0

縮進是問題:P在我的評論後花了一段時間才注意到它。非常感謝你。編程是一個持續的學習之旅;我是python的新手。 – PythonNoob

回答

0

邁克爾是在評論是正確的,你有for循環內的print命令,所以它顯示每個循環,但到了最後,a_arraÿ將只有最後顯示的數值。

更有趣的問題是如何從你的第三行(['1.2', '2.2', '6.5'],字符串列表)到你想要的(a_array = [1.2, 2.2, 6.5],一個數字列表)。

如果你知道它們都是數字,你可以使用a_array.append(float(a)),但是這會遇到b的問題,使用科學記數法。幸運的是,Python可以轉錄科學記數法,如b,但沒有空格。爲此,您可以使用replace在轉換之前刪除所有空格。不要緊,如果沒有空間,因此這種方法適用於a以及(用Python編寫的3.5.2):

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