背景
原是弱电集成的设计员,纠结很久后参加了python培训机构转职后的一员小白,由于一次工作中需要翻译一份近100页word表格,纯手工翻译大概三个小时,为了解决这种重复又耗时的劳动,并重温python相关知识所以制作了该小程序。
脚本详情
import re import docx import time import pandas as pd from selenium import webdriver from selenium.webdriver.chrome.options import Options # 导入chrome选项 from selenium.webdriver.common.keys import Keys from os import system ''' seleium爬虫效率很低但胜在不用考虑反爬问题,由于想加快翻译速度并实现转换为exe文件后可在其他无python环境中运行, 添加excel表格充当数据库,excel文件中,一列命名漏洞英文列表,一列命名漏洞翻译列表,由于使用seleeium需在python目 录下添加对应浏览器driver,由于我使用的是chrome所以需下载chromedriver。 ''' def mydoc(doc,table,huan,expath): table_contents = [] table_content_trans = [] for i in range(0,len(table.rows)):#设定i值极限 行 data = pd.DataFrame(pd.read_excel(expath)) datalist_d = data['漏洞英文列表'] datalist_t = data['漏洞翻译列表'] i_text = table.cell(i,0).text#表格内i行j列单元格内容赋值给i_text zhPattern = re.compile(u'[\u4e00-\u9fa5]+') # 中文字符范围 szPattern = re.compile(u'[0-9]') # 数字范围 # spPattern = re.compile(u'[/]+') contents = u'{}'.format(i_text) # 表格内单元格文本 # search整个字符串内查找模式匹配,找到第一个匹配然后返回一个包含匹配信息的对象,无则NONE # match匹配字符串第一位,开头位置是否匹配,匹配成功才会返回结果,否则返回None #'[^"\n", "") # 内容去除换行 table.cell(i, 0).text = trans_result_n # 替换表格内容 table_content_trans.append(trans_result_n) # 翻译和排版后内容加入表格 data_t = pd.Series({"漏洞英文列表": i_text,"漏洞翻译列表": trans_result_n}, name='漏洞库') # 添加数据 data_add_t = data.append(data_t) # 添加数据 data_add_t.to_excel(expath, index=False) # 存入excel中 print('存入漏洞库...') else: table.cell(i, 0).text = trans_result # 替换表格内容 table_content_trans.append(trans_result) # 翻译和排版后内容加入表格 data_t = pd.Series({"漏洞英文列表": i_text,"漏洞翻译列表": trans_result}, name='漏洞库') # 添加数据 data_add_t = data.append(data_t) # 添加数据 data_add_t.to_excel(expath, index=False) # 存入excel中 print('存入漏洞库...') else: print('漏洞库为空') table_contents.append(i_text) # 表格内内容 trans_result = myspider(i_text) # 翻译表格内容 print('翻译中...') if huan == 1: trans_result_n = trans_result.replace("\n", "") # 内容去除换行 table.cell(i, 0).text = trans_result_n # 替换表格内容 table_content_trans.append(trans_result_n) # 翻译和排版后内容加入表格 data_t = pd.Series({"漏洞英文列表": i_text,"漏洞翻译列表": trans_result_n}, name='漏洞库') # 添加数据 data_add_t = data.append(data_t) # 添加数据 data_add_t.to_excel(expath, index=False) # 存入excel中 print('存入漏洞库...') else: table.cell(i, 0).text = trans_result # 替换表格内容 table_content_trans.append(trans_result) # 翻译和排版后内容加入表格 data_t = pd.Series({"漏洞英文列表": i_text,"漏洞翻译列表": trans_result}, name='漏洞库') # 添加数据 data_add_t = data.append(data_t) # 添加数据 data_add_t.to_excel(expath, index=False) # 存入excel中 print('存入漏洞库...') #判断列表中是否都是空字符串 flag = False for i in table_contents: if i.strip() != '': flag = True # 空列表或者列表中都是空字符串不翻译 if len(table_contents) == 0 or flag == False: return print("此表格无需翻译或漏洞库中已存储") else: print('表格待翻译内容:',table_contents) print('表格翻译后内容:',table_content_trans) def myspider(text): # 设置chrome浏览器无头模式 chrome_options = Options() chrome_options.add_argument('--headless') driver = webdriver.Chrome(chrome_options=chrome_options) # driver.fullscreen_window() #全屏 driver.maximize_window() # 屏幕最大化 # 打开有道翻译页面 driver.get("http://fanyi.youdao.com/") time.sleep(0.5) # 获取页面名为inputOriginal的id标签的文本内容 inputwd = driver.find_element_by_id("inputOriginal") # 搜索输入文本框的id属性值 .text #id="wrapper"的所有文本 but = driver.find_element_by_id('transMachine') # 搜索提交按钮//*[@id="transMachine"] outputwd = driver.find_element_by_xpath('//*[@id="transTarget"]') # 翻译后文本框 inputwd.clear() # 清除文本框里的内容 # outputwd.clear() # 清除文本框里的内容 inputwd.send_keys(text) # 输入翻译内容 but.send_keys(Keys.RETURN) # 输入回车键 but.click() #点击按钮s time.sleep(0.5) result = outputwd.text # 关闭浏览器 driver.quit() return result def mymain(): # urlname = input('输入路径:') docname = input('输入文件全名:') huan = int(input('翻译内容是否需删除换行(1.是2.否):')) # urlname_t = urlname.replace('\\','\\\\') # print('转义后路径:',f'{urlname}//{docname}') path = f'.\\{docname}' #文件路径 expath = '.\\漏洞库.xlsx' doc = docx.Document(path) tables = doc.tables # 获取文件中的表格集 e1 = time.time() print(f'共{len(tables)}个表格') n = 1 try: for i in range(0,len(tables)): table = tables[i] mydoc(doc,table,huan,expath) print(f'\n剩余{len(tables)-n}个表格待翻译') time.sleep(0.3) n += 1 doc.save(f".\\trans{docname}") except Exception as e: print('报错:',e) e2 = time.time() print('耗时:',float(e2 - e1)) print('转换完毕') system('pause') mymain()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
金钱帮资源网 Copyright www.kbjia.com
暂无“python实现翻译word表格小程序”评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年10月08日
2024年10月08日
- 《丁当 20首重量级歌曲 Fu Good 下一站天后 2CD》[WAV/分轨][650MB]
- 歌莉雅.2012-My.Voice.Story【环星】【FLAC分轨】
- 群星.1993-一曲成名·青春无悔【飞碟】【WAV+CUE】
- 刘德华.2000-爱无知(金装版)【NEWMELODY】【WAV+CUE】
- 许巍《时光漫步》1CD[FLAC/分轨][804.3MB]
- 群星《2024第一季度百度歌曲排行抖音榜top100》1CD[FLAC/分轨][2.3GB]
- 张柏芝《全新经验》[FLAC/分轨][450MB]
- 唐朝.2008-浪漫骑士【音乐家】【WAV+CUE】
- 张芸京.2016-失败的高歌【泡耳音乐】【WAV+CUE】
- 群星.1991-音乐工厂1·皇后大道东【音乐工厂】【WAV+CUE】
- 群星.1992-音乐工厂2·首都【音乐工厂】【WAV+CUE】
- 群星.1994-音乐工厂3·儿童乐园【音乐工厂】【WAV+CUE】
- 胡鸿钧.2021-ex:CHANGE【星梦娱乐】【WAV+CUE】
- 班得瑞原装进口《第一张新世纪专辑:仙境》1CD[APE/CUE分轨][292.3MB]
- 伍佰《摇滚教父 伍佰黄金精选 2CD》[WAV+CUE][990MB]