背景

原是弱电集成的设计员,纠结很久后参加了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'[一-龥]+') # 中文字符范围

szPattern = re.compile(u'[0-9]') # 数字范围

# spPattern = re.compile(u'[/]+')

contents = u'{}'.format(i_text) # 表格内单元格文本

# search整个字符串内查找模式匹配,找到第一个匹配然后返回一个包含匹配信息的对象,无则NONE

# match匹配字符串第一位,开头位置是否匹配,匹配成功才会返回结果,否则返回None

#'[^?\/]'返回指定标点符号

match_zh = zhPattern.search(contents)

match_sz = szPattern.match(contents)

if match_zh or match_sz:

pass

else:

if len(datalist_d) != 0:

flag_excel = False

for j in range(len(datalist_d)):

if datalist_d[j] == i_text:

table.cell(i,0).text = str(datalist_t[j])

flag_excel = True

break

if flag_excel == False:

print('漏洞库中未搜索到...')

table_contents.append(i_text) # 表格内内容

trans_result = myspider(i_text) # 翻译表格内容

print('翻译中...')

if huan == 1:

trans_result_n = trans_result.replace(" ", "") # 内容去除换行

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(" ", "") # 内容去除换行

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' 剩余{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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python翻译程序-python实现翻译word表格小程序相关推荐

  1. python爬虫爬取微信公众号小程序信息

    python爬虫爬取微信公众号小程序信息 爬取内容 某汽车维修信息提供的维修店名称,地点以及电话(手机)号码 爬取步骤 啥也别管,先抓包看看,在这里,博主使用的抓包软件是charles 抓包:将网络传 ...

  2. python自动填写小程序表单_新年好!教大家用Python写一个自动回复拜年信息的小程序!...

    原标题:新年好!教大家用Python写一个自动回复拜年信息的小程序! 过年期间,想必大家都收到很多拜年信息吧!有没有也被拜年短信(大部分是群发)搞得很焦虑?不回复似乎显得很没有礼貌,一一回复又累心劳神 ...

  3. 数独解题程序的python实现_python实现自动解数独小程序

    跟朋友最近聊起来数独游戏,突发奇想使用python编写一个自动计算数独解的小程序. 数独的规则不再过多阐述,在此描述一下程序的主要思路: (当前程序只针对于简单的数独,更复杂的还待深入挖掘) 1.计算 ...

  4. 计算机毕业设计Python+uniapp扫码点餐微信小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp扫码点餐微信小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ pyth ...

  5. python加油代码_python入门教程NO.5 用python写个自动选择加油站的小程序

    本文涉及的python基础语法为:if条件分支 Python条件分支是通过一条或者多条语句的执行结果True或者False来决定是否执行相应的代码块. if单向条件语法结构 if 判断条件: 代码块 ...

  6. Python入门教程NO.5 用python写个自动选择加油站的小程序

    本文涉及的 python 基础语法为:if 条件分支 Python 条件分支是通过一条或者多条语句的执行结果 True或者 False来决定是否执行相应的代码块. if 单向条件语法结构 if 单向条 ...

  7. 计算机毕业设计Python+uniapp联影医疗器械管理系统小程序(小程序+源码+LW)

    计算机毕业设计Python+uniapp联影医疗器械管理系统小程序(小程序+源码+LW) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行 环境配置: Pychram社区版+ ...

  8. [附源码]计算机毕业设计Python+uniapp晋中市居民健康卡小程序j7d04(程序+lw+远程部署)

    [附源码]计算机毕业设计Python+uniapp晋中市居民健康卡小程序j7d04(程序+lw+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pyth ...

  9. [附源码]计算机毕业设计Python+uniapp驾校预约练车的小程序v5fxm(程序+lw+远程部署)

    [附源码]计算机毕业设计Python+uniapp驾校预约练车的小程序v5fxm(程序+lw+远程部署) 该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Pytho ...

最新文章

  1. 如何快捷高效实现仓储精细化、透明化管理?
  2. 问问题要量化,要具体
  3. 原版ubuntu中安装中文输入法
  4. 10深入理解C指针之---指针运算和比较
  5. Tensorflow安装笔记
  6. 第八十四期: Java、Web 和移动程序员学习的 12 个框架
  7. Webview中无法触发手势方法(ontouchevent,onfling...)的解决方法
  8. 如何用python计算营业额_如何用Python进行RFM分析
  9. 【干货】数字化转型工作手册.pdf(附下载链接)
  10. 常见的主机运维面板有哪些?主机面板全面汇总(国内外)
  11. Zune vs iPod
  12. mouseover和mouseenter的区别?
  13. deamon(大鹅模拟器steam)
  14. dns解析失败如何处理?
  15. 【申博攻略】一.北交计算机学院学术型博士“申请-考核”攻略(招生简章篇)
  16. flutter 仿照智行app 首页
  17. MySQL 不等于的三种表示及区别
  18. 智慧城市运维中心——智慧纽约
  19. golang 的 strings 包的 Trim 的用法介绍
  20. 新浪导航(html+css)

热门文章

  1. src或者href值为base64编码代码
  2. spring boot 系列之四:spring boot 整合JPA
  3. Java设计模式(20)——行为模式之命令模式(Command)
  4. Android系统移植与驱动开发--第四章
  5. android music app架构,android-UniversalMusicPlayer 的项目运用
  6. python是一种语言吗-Python是一种什么样的编程语言?解释?编译?汇编?机械?...
  7. 计算机科学与技术python方向是什么意思-第一模块·开发基础-第1章 Python基础语法...
  8. python编程入门经典 评分-豆瓣评分爆炸!Python+机器学习经典图书
  9. python大数据分析实例-Python大数据处理案例
  10. python 小说-用Python爬下十几万本小说,再也不会闹书荒!