import re import gradio as gr import pandas as pd def parse_text(txt_file): # 将上传的文件名作为输入参数 file_name = txt_file.name filename_with_dot = file_name.rsplit('/', 1)[1] print(filename_with_dot) filename = filename_with_dot.split('.', 1)[0] print(filename) with open(file_name, "r") as f: # 读取上传文件中的内容 content = f.read() # 在这里进行文本解析 lines = content.split("\n") numbered_lines = [(i + 1, line) for i, line in enumerate(lines)] # 将解析结果转换为字符串输出 output_str = "" for num, line in numbered_lines: output_str += f"{num}. {line}\n" filename = filename.split('.', 0)[0] return filename, output_str def process_text(text): try: sentences = re.split(r'\d+\.', text) except Exception: try: sentences = re.split(r'\d+', text) except Exception: pass sentences = [s.strip() for s in sentences if s.strip()] return sentences def pd_form(sentences): rows = [] for i in range(len(sentences)): row_number = i + 1 description = sentences[i] row = { "镜号": row_number, "画面范例": '', "时长": '', "景别": '', "画面说明": description, "歌词": '', "备注": '', } rows.append(row) return rows def to_excel(t_file): text_file, name_file = parse_text(t_file)[1], parse_text(t_file)[0] output_file_name = name_file + '.xlsx' txt = process_text(text_file) rows = pd_form(txt) writer = pd.ExcelWriter(output_file_name, engine='xlsxwriter') df = pd.DataFrame(rows) df.to_excel(writer, index=False, sheet_name="Sheet1") writer.close() return output_file_name iface = gr.Interface( fn=to_excel, inputs=gr.inputs.File(label="请上传 txt 格式文件"), outputs=gr.File(label="下载 xlsx 格式文档"), title="txt - xlsx 分镜格式转换器", description="说明: 如果转换不成功,请重试几次") iface.launch()