大语言模型LLM的微调中 Q&A 转换的小工具 xlsx2json.py

在训练语言模型中,需要将文件整理成规范的文档,因为文档本身会有很多不规范的地方,为了训练的正确,将文档进行规范处理。代码的功能是读取一个 Excel 文件,将其数据转换为 JSON 格式,并将 JSON 数据写入到一个文本文件中,实现了从 Excel 数据到 JSON 数据的转换,方便在其他系统或应用中使用或传输数据。

最终要在模型里使用的还是json 格式,以input / output字典格式的输出为例

{

"input": xxx,

"output": xxx

},

逐条解释代码如下:

1. 导入必要的库

复制代码
import pandas as pd
import os
import json
  • import pandas as pd:导入pandas库,并使用别名pdpandas是一个用于数据处理和分析的强大库,提供了数据结构(如DataFrame)和数据操作方法,方便处理表格型数据,如 Excel 文件中的数据。
  • import os:导入os模块,用于处理文件路径相关的操作,如获取当前文件所在目录、拼接文件路径等。
  • import json:导入json模块,用于处理 JSON 数据,包括将 Python 对象转换为 JSON 格式以及将 JSON 数据解析为 Python 对象。

2. 设置工作目录并指定数据集文件路径

复制代码
work_dir = os.path.dirname(os.path.abspath(__file__))
tmp_data_file = os.path.join(work_dir, "output.xlsx")
  • work_dir = os.path.dirname(os.path.abspath(__file__)):获取当前 Python 脚本文件所在的目录路径,并将其赋值给work_dir变量。os.path.dirname获取指定路径的目录部分,os.path.abspath获取绝对路径,__file__是 Python 内置变量,表示当前脚本文件的路径。
  • tmp_data_file = os.path.join(work_dir, "output.xlsx"):通过os.path.join将工作目录和文件名output.xlsx拼接成完整的 Excel 文件路径,这里假设output.xlsx在与脚本相同的目录下。如果实际情况不同,需要根据实际情况修改路径。

3. 读取 Excel 文件

复制代码
df = pd.read_excel(tmp_data_file)

使用pandasread_excel函数读取指定路径(tmp_data_file)的 Excel 文件,并将其数据加载到一个DataFrame对象中。DataFramepandas库中用于处理二维表格数据的主要数据结构,类似于 Excel 中的工作表,可以方便地进行数据选择、过滤、分析等操作。

4. 将 DataFrame 转换为字典列表

复制代码
data_list = df.to_dict('records')

调用DataFrame对象的to_dict方法,将DataFrame中的每一行数据转换为一个字典,然后将这些字典组成一个列表。参数'records'表示每行数据作为一个字典,字典的键是列名,值是对应列的值。这样得到的data_list是一个包含多个字典的列表,每个字典代表 Excel 文件中的一行数据。

5. 将字典列表转换为 JSON 字符串

复制代码
json_data = json.dumps(data_list, ensure_ascii=False, indent=4)

使用json模块的dumps函数将data_list(字典列表)转换为 JSON 格式的字符串。ensure_ascii=False参数确保非 ASCII 字符(如中文)能够正确显示,而不是以转义字符的形式出现。indent=4参数使生成的 JSON 字符串具有缩进,格式更易读,方便查看和调试。

6. 将 JSON 数据写入文件

复制代码
with open(os.path.join(work_dir, 'json_output.txt'), 'w') as f:
    f.write(json_data)

使用with open语句以写入模式('w')打开指定路径(os.path.join(work_dir, 'json_output.txt'))的文件。在with语句块内,将 JSON 字符串(json_data)写入到文件中。with语句会自动管理文件的打开和关闭,确保在操作完成后正确关闭文件,避免资源泄漏。

excel to json

python 复制代码
import pandas as pd
import os
import json

# 设置工作目录
work_dir = os.path.dirname(os.path.abspath(__file__))
# 处理的数据集
tmp_data_file = os.path.join(work_dir, "output.xlsx")

# 读取Excel文件
df = pd.read_excel(tmp_data_file)

# 将DataFrame转换为字典列表
data_list = df.to_dict('records')

# 使用json.dumps函数将字典列表转换为JSON字符串,设置ensure_ascii=False
json_data = json.dumps(data_list, ensure_ascii=False, indent=4)

# 将JSON数据写入文件
with open(os.path.join(work_dir, 'json_output.txt'), 'w') as f:
    f.write(json_data)

以下是使用pandas库将 JSON 数据转换为 Excel 文件的代码示例:

复制代码
import pandas as pd
import json
import os

# 设置工作目录
work_dir = os.path.dirname(os.path.abspath(__file__))

# JSON文件路径
json_file_path = os.path.join(work_dir, 'json_data.json')

# 读取JSON文件
with open(json_file_path, 'r') as f:
    json_data = json.load(f)

# 将JSON数据转换为DataFrame
df = pd.DataFrame(json_data)

# Excel文件输出路径
excel_file_path = os.path.join(work_dir, 'output.xlsx')

# 将DataFrame写入Excel文件
df.to_excel(excel_file_path, index=False)
  1. 首先设置工作目录,获取当前脚本所在的目录路径。
  2. 然后指定 JSON 文件的路径,通过open函数以只读模式打开 JSON 文件,并使用json.load函数将 JSON 数据加载为 Python 对象(通常是字典或列表)。
  3. 接着使用pandasDataFrame构造函数将 JSON 数据转换为DataFrame,这是pandas中用于处理二维表格数据的主要数据结构。
  4. 再指定输出 Excel 文件的路径。
  5. 最后使用DataFrameto_excel方法将数据写入 Excel 文件,index=False参数表示不将行索引写入 Excel 文件。

sample json_output.txt

{ "input": "目前什么事项会有系统邮件或者企信消息通知?", "output": "\[此处未明确提及具体通知事项,需查看文档中的图片,假设图片显示包含合同审批通知、付款通知等\]合同审批进度、付款状态等事项会有系统邮件或企信消息通知(具体需根据文档中图片所示内容确定)。" }, { "input": "元年商旅订票时身份信息有误,如何修改?", "output": "行程选择界面,点击出行人"\>"按钮编辑证件信息,外籍注意检查护照信息,避免证件信息有误影响乘机。" }, { "input": "差旅费哪些发票需要员工线下打印?", "output": "机票中的电子客运行程单、酒店住宿专票、火车票,线上订票月结统付统一打印发票;使用护照等非身份证订票的火车票、火车退改签票据,须员工线下打印后交回;滴滴用车、餐费、洗衣费等,须员工垫付后开票。" }, { "input": "差旅酒店住宿不通过线上预订,如何在差旅事前申请中预估费用?", "output": "按标准添加行程规划,如选择目的地、入住离店日期、房间数、住宿标准等,系统会自动计算预估费用上限。" }, { "input": "跨店同事是否可以合住?", "output": "为节约费用,可以合住,请线下预定酒店,报销时事由特殊报备。另外,同店员工也是可以合住的,请通过元年预定酒店即可。" }, { "input": "老系统已审批完成的差旅事前申请在哪提报销?", "output": "商旅模块---行程方案---迁移前差旅费报销单。" }, { "input": "迁移前差旅费报销单据,如何添加未在事前申请中预估的费用?", "output": "在预算归属中点击操作下的"⊕"按钮,新增行项目添加费用。老系统事前申请的所有行项目、未在事前申请中预估报销新增的行项目均在同一费用明细行里添加。" },

相关推荐
NAGNIP11 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab12 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab12 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP15 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年16 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼16 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS16 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区17 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈17 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang18 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx