You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python将JSON表格引用映射到Excel并生成LaTeX文档

解决方案:匹配Excel需求与JSON表格并生成LaTeX文档

以下是完整的实现代码,包含正则匹配、表格匹配及LaTeX生成的全部逻辑:

import pandas as pd
import json
import re

def translate_requirements(input_excel, tables_json, output_latex):
    # 读取Excel文件,取第一列需求并移除空行
    df = pd.read_excel(input_excel)
    requirements = df.iloc[:, 0].dropna()

    # 读取JSON表格数据
    with open(tables_json, 'r') as file:
        tables = json.load(file)

    # 初始化LaTeX文档基础结构
    latex_content = r"""
\documentclass{article}
\usepackage{booktabs}  % 用于生成美观的表格线
\begin{document}
\section{Requirements with Corresponding Tables}
"""

    # 正则模式:匹配"table X"格式,忽略大小写兼容不同写法
    table_pattern = re.compile(r'table (\d+)', re.IGNORECASE)

    # 遍历处理每个需求
    for idx, req in enumerate(requirements, 1):
        req_text = str(req).strip()
        # 写入需求条目
        latex_content += f"\n\\textbf{{Requirement {idx}:}} {req_text}\n"

        # 查找需求中的表格引用
        match = table_pattern.search(req_text)
        if match:
            table_num = match.group(1)
            # 从JSON中匹配对应表格数据
            if table_num in tables:
                table_data = tables[table_num]
                headers = table_data.get('headers', [])
                rows = table_data.get('rows', [])

                if headers and rows:
                    # 动态生成LaTeX表格列格式(此处用居中对齐,可按需调整)
                    col_format = '|' + 'c|' * len(headers)
                    # 构建表格的LaTeX代码
                    table_latex = "\n\\begin{table}[h]\n\\centering\n"
                    table_latex += f"\\caption{{Table {table_num}: {req_text.split('table')[0].strip()}}}\n"
                    table_latex += f"\\begin{tabular}{{{col_format}}}\n\\hline\n"
                    # 写入表头
                    table_latex += ' & '.join(headers) + " \\\\\n\\hline\n"
                    # 写入表格行数据
                    for row in rows:
                        table_latex += ' & '.join(map(str, row)) + " \\\\\n"
                    table_latex += "\\hline\n\\end{tabular}\n\\end{table}\n"
                    # 将表格代码加入文档内容
                    latex_content += table_latex
            else:
                # 无对应表格时添加提示
                latex_content += f"\n\\textit{{Note: Table {table_num} not found in JSON data}}\n"

    # 补充LaTeX文档结尾
    latex_content += "\n\\end{document}"

    # 写入最终LaTeX文件
    with open(output_latex, 'w', encoding='utf-8') as latex_file:
        latex_file.write(latex_content)

# 调用函数执行转换
translate_requirements('input.xlsx', 'tables.json', 'output_latex.tex')
print('LaTeX document generated successfully')

关键步骤说明

  1. 正则匹配表格引用

    • 用re.compile(r'table (\d+)', re.IGNORECASE)创建匹配规则,兼容table 3、Table 5、TABLE 2等各种大小写写法,精准捕获表格编号。
    • 对每个需求文本执行search方法,快速判断是否包含表格引用。
  2. JSON表格数据匹配

    • 假设你的JSON结构为如下形式(可根据实际结构调整代码逻辑):
      {
        "3": {
          "headers": ["Parameter", "Maximum Value"],
          "rows": [["Mass", "1.3 kg"], ["Volume", "1000 cm³"]]
        },
        "5": {
          "headers": ["Test Item", "Pass Criteria"],
          "rows": [["Vibration", "No structural damage"], ["Thermal", "Function normal"]]
        }
      }
      
    • 直接用捕获到的表格编号作为键,从JSON字典中取出对应表格的表头和行数据。
  3. LaTeX表格生成

    • 引入booktabs包优化表格样式,也可替换为普通\hline实现基础表格。
    • 根据表头数量动态生成列格式,支持灵活调整对齐方式(c居中、l左对齐、r右对齐)。
    • 自动为表格添加关联需求的标题,提升文档可读性。
  4. 文档写入逻辑

    • 先构建LaTeX文档的基础结构(文档类、包引入、章节标题)。
    • 遍历需求时,先写入需求文本;若存在有效表格引用则插入生成的LaTeX表格;若表格不存在则添加提示文本。
    • 最后补充文档结束标签,完成整个LaTeX文件的生成。

内容的提问来源于stack exchange,提问作者Rifat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 16:44:52