我正在尝试创建一个 ascii 表,其中包含有关标题的一些信息、列的名称和单位以及一些数据,它应该如下所示:
# ... Header Info ...
Name | Morphology | ra_u | dec_u | ...
| InNS+B+MOI | HH:MM:SS.SSS | ±DD:MM:SS:SSS| ...
==============| ========== | ============ | ============ | ...
1_Cam_A | I | 04:32:01.845 | +53:54:39.03 ...
10_Lac | I | 22:39:15.679 | +39:03:01.01 ...
...
到目前为止,我已经尝试使用 numpy.savetxt 和 astropy.ascii.writhe,numpy 并不能真正解决我的问题,而使用 ascii.write 我已经能够得到类似但不太正确的东西:
Name | Morphology | ra_u | dec_u | ...
================== | ========== | ============ | ============ | ...
1_Cam_A | I | 04:32:01.845 | +53:54:39.03 ...
...
我正在使用这段代码:
formato= {'Name':'%-23s','Morphology':'%-10s','ra_u':'%s','dec_u':'%s',...}
names=['Name','Morphology','ra_u','dec_u','Mag6']
units=['','InNS+B+MOI','HH:MM:SS.SSS','±DD:MM:SS:SSS',...]
ascii.write(data, output='pb.txt',format='fixed_width_two_line',position_char='=',delimiter=' | ',names=names, formats=formato)
因此,如果我在终端中进行打印,除了标题信息外,表格看起来应该是正常的,但是当我将其保存到文件中时,单位消失了...
有什么方法可以将它们包含在文件中吗?或者我需要保存文件并稍后再编辑?
P.D.:我还尝试了一些其他格式,例如 ascii.write 的 IPAC,在这种情况下,问题是标题中包含第 4 行,如:'|空 | null |.....' 而且我不知道如何摆脱它...
感谢帮助
祝你好运。
最佳答案
使用 astropy.table
或 astropy.io.ascii
似乎没有直接的方法以通用方式写出列的单位。您可能想在 https://github.com/astropy/astropy/issues 提出问题带有功能请求。
但是,使用 ascii.ipac
格式有一个非常简单的解决方法:
tbl.write('test.txt', format='ascii.ipac')
with open('test.txt', 'r') as fh:
output = []
for ii, line in enumerate(fh):
if ii not in (1,3):
output.append(line)
with open('test.txt', 'w') as fh:
fh.writelines(output)
将以 IPAC 格式写出,然后删除第 2 行和第 4 行。
关于python - 如何将 astropy 表的标题和单位保存到 ascii 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36261388/