如何用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')
关键步骤说明
正则匹配表格引用
- 用
re.compile(r'table (\d+)', re.IGNORECASE)创建匹配规则,兼容table 3、Table 5、TABLE 2等各种大小写写法,精准捕获表格编号。 - 对每个需求文本执行
search方法,快速判断是否包含表格引用。
- 用
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字典中取出对应表格的表头和行数据。
- 假设你的JSON结构为如下形式(可根据实际结构调整代码逻辑):
LaTeX表格生成
- 引入
booktabs包优化表格样式,也可替换为普通\hline实现基础表格。 - 根据表头数量动态生成列格式,支持灵活调整对齐方式(
c居中、l左对齐、r右对齐)。 - 自动为表格添加关联需求的标题,提升文档可读性。
- 引入
文档写入逻辑
- 先构建LaTeX文档的基础结构(文档类、包引入、章节标题)。
- 遍历需求时,先写入需求文本;若存在有效表格引用则插入生成的LaTeX表格;若表格不存在则添加提示文本。
- 最后补充文档结束标签,完成整个LaTeX文件的生成。
内容的提问来源于stack exchange,提问作者Rifat
相关产品推荐
相关产品推荐

