在Python中将LaTex表读入数组

时间:2013-02-18 16:17:14

标签: python file import latex

我在Python中对初学者有一项艰巨的任务,我需要从源文件中导入一个用LaTex编写的表。我以为我会使用表的名称作为标识符,然后逐行写入数组,从表的开头到结尾。做这项工作的“自然”方式是什么?

2 个答案:

答案 0 :(得分:3)

astropy package有一个LaTeX表读者。

from astropy.table import Table
tab = Table.read('file.tex')

阅读器功能应自动识别格式并读取文件中的第一个表格。 (如果需要更新的表,请将相关部分剪切并粘贴到新文件中)。 但是,读者有一些限制。最重要的是,每一行数据都必须在一行上(问题中表格的链接已经死了,所以我看不出这是否有问题)并且不能有\multicolumn或{{}这样的命令1}}。

检查天文数据中的胶乳阅读文档以获取更多选项:https://astropy.readthedocs.org/en/latest/api/astropy.io.ascii.Latex.html#astropy.io.ascii.Latex

答案 1 :(得分:0)

我个人会在表的开头和结尾添加一个乳胶评论,以表示您感兴趣的行范围。

import linecache
FILEPATH = 'file.tex'


def get_line_range():
    'returns the lines at which the table begins and ends'
    begin_table_line = None
    end_table_line = None
    with open(FILEPATH, "r") as file:
        array = []
        for line_number, line in enumerate(file):
            if 'latex comment denoting beginning of table' in line:
            begin_table_line = line_number

            if 'latex comment denoting end of table' in line:
            end_table_line = line_number

    return begin_table_line+1, end_table_line

def get_table():
    'gets the lines containing the table'
    start, end = get_line_range()
    return [linecache.getline(FILEPATH, line) for line in xrange(start, end)]

上面的代码是在没有测试的情况下完成的,但应该从.tex文件中获取表格。但它的一个明显问题是它读取文件两次并且绝对可以优化。