2017-05-08 76 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)。