2017-05-08 31 views
-1

與astropy提取範圍列我有以下文件:使用for循環爲在python

rowname1  0.0019  0.0142  -0.0258  -0.0058  -0.0097  
rowname2  0.0001  0.0168  -0.0268  -0.0063  -0.0072 

和我想從第二提取的列(即避免了rownames柱)XTH。到目前爲止,我正在使用astropy模塊的ascii.read函數;如果我例如組x = 3:

from astropy.io import ascii 
x = 3 
evec = ascii.read('file', include_names=['col'[i] for i in xrange(2,x)]) 
print evec 

它只是返回

<No columns> 

應該如何for循環是爲了正常工作?

謝謝!

+0

在我看來,astropy期望從ASCII文件讀取表的列名。 Cf:http://docs.astropy.org/en/stable/io/ascii/ –

+0

如果您運行:from astropy.io import ascii evec = ascii.read('file',include_names = ['col2',' col3']) 打印evec你得到兩個第一列 – Jaime

+0

啊,我明白了。問題在於你選擇'col'的第二個字符'col'[i],而你實際上想要連接。 –

回答

1

您在include_names中有一個錯誤,即您選擇'col'的第二個字符,並且不將數字連接到字符串。

只需將其替換爲:

evec = ascii.read('file', include_names = ['col' + str(i) for i in xrange(2,x)]) 

同時認爲,x範圍的第二個參數不包括在內;所以如果你想在你的例子中包含3,使用xrange(2,x + 1)。