写一个python程序,可视化选择一个json文件,再可视化选择一个excel表格,用json的原文搜索,excel表格第二列的每一行,如果有匹配上的,用json原文对应的翻译替换。处理前,需要先将json词典从大到小排序,确保长的文本先替换。程序需要处理大型的json和xlsx文件,请尽可能提高速率,另外根据json词典的总数的进度要写一个进度条,一定要可视化操作程序!
要实现这个功能,我们可以使用Python的几个库,包括tkinter
用于可视化文件选择,pandas
用于处理Excel文件,json
用于处理JSON文件,以及tqdm
用于显示进度条。以下是一个示例程序,展示了如何实现这个功能。
首先,确保你已经安装了所需的库。如果没有安装,可以使用以下命令:
pip install pandas tqdm openpyxl
接下来,下面是完整的Python程序:
import json
import pandas as pd
import tkinter as tk
from tkinter import filedialog
from tqdm import tqdm
def load_json(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
return json.load(f)
def load_excel(file_path):
return pd.read_excel(file_path)
def save_excel(df, file_path):
df.to_excel(file_path, index=False)
def replace_text_in_excel(json_dict, excel_df):
# 将json字典按键长度从大到小排序
sorted_json_dict = dict(sorted(json_dict.items(), key=lambda item: len(item[0]), reverse=True))
# 处理Excel的第二列
for index, row in tqdm(excel_df.iterrows(), total=excel_df.shape[0], desc="Processing"):
original_text = row[1] # 假设第二列是需要替换的文本
for key, value in sorted_json_dict.items():
if key in original_text:
original_text = original_text.replace(key, value)
excel_df.at[index, excel_df.columns[1]] = original_text # 更新第二列的值
def main():
# 创建Tkinter窗口
root = tk.Tk()
root.withdraw() # 隐藏主窗口
# 选择JSON文件
json_file_path = filedialog.askopenfilename(title="选择JSON文件", filetypes=[("JSON files", "*.json")])
if not json_file_path:
print("未选择JSON文件,程序退出。")
return
# 选择Excel文件
excel_file_path = filedialog.askopenfilename(title="选择Excel文件", filetypes=[("Excel files", "*.xlsx")])
if not excel_file_path:
print("未选择Excel文件,程序退出。")
return
# 加载数据
json_dict = load_json(json_file_path)
excel_df = load_excel(excel_file_path)
# 替换文本
replace_text_in_excel(json_dict, excel_df)
# 保存结果
output_file_path = filedialog.asksaveasfilename(title="保存结果为", defaultextension=".xlsx", filetypes=[("Excel files", "*.xlsx")])
if output_file_path:
save_excel(excel_df, output_file_path)
print("处理完成,结果已保存。")
else:
print("未选择保存路径,程序退出。")
if __name__ == "__main__":
main()
tkinter
库创建文件选择对话框,用户可以选择JSON和Excel文件。json
库加载JSON文件,使用pandas
加载Excel文件。tqdm
库显示处理进度。