python有道批量单词音标整理-Python 批量翻译 使用有道api;
妹子是做翻译相关的,遇到个问题,要求得到句子中的所有单词的 音标;
有道翻译只能对单个单词翻译音标,不能对多个单词或者句子段落翻译音标;
手工一个一个翻的话那就要累死人了.....于是就让我写个翻译音标工具
一开始没想到该怎么搞,,之后突然想到了利用有道api网页翻译来做每个单词的音标翻译;
选择了python语言来写;也想过用C#或者c++来做,但是要用到curl库,解析json代码也麻烦;就直接用python写了;
有道翻译api网站: 需要申请key,直接替换 self.key = 'xxxx' self.keyfrom = 'xxxx' 就可以了
http://fanyi.youdao.com/openapi?path=data-mode
后来妹子说,他们有时候需要处理 字幕srt 文件的音标翻译,一句一句太慢了,
想直接读取srt,输出txt的工具;
下面上代码: 支持单行输入及输出:
# -*- coding: utf-8 -*-
import sys
import urllib2
import re
import json
import string
class Youdao:
def __init__(self):
self.url = 'http://fanyi.youdao.com/openapi.do'
self.key = '1106591478'
self.keyfrom = 'left69'
def get_translation(self,words):
url = self.url + '?keyfrom=' + self.keyfrom + '&key='+self.key + '&type=data&doctype=json&version=1.1&q=' + words
result = urllib2.urlopen(url).read()
json_result = json.loads(result)
json_result = json_result["translation"]
for i in json_result:
print i
youdao = Youdao()
def get_yinbiao(words):
splitStr = words
for c in string.punctuation:
if c != "'":
splitStr = splitStr.replace(c, ' ')
print " "+splitStr
listu = splitStr.split(' ')
output = ""
for j in listu:
output = output + ' ' + SendGet(j)
print output
def SendGet(str):
judge = str.lower()
if judge.lower()=="it":
return "it"
if judge.lower()=="mr":
return "'miste(r)"
#print str
url = "http://fanyi.youdao.com/openapi.do?keyfrom=left69&key=1106591478&type=data&doctype=json&version=1.1&q="+str
req = urllib2.Request(url)
res_data = urllib2.urlopen(req)
res = res_data.read()
#print res
if(res == "no query"):
return judge
hjson = json.loads(res)
#print hjson['basic']['uk-phonetic']
#danci = hjson['basic']['uk-phonetic']
if(hjson['errorCode']!=0):
return judge
if hjson.has_key('basic'):
if hjson['basic'].has_key('uk-phonetic'):
danci=hjson['basic']['uk-phonetic']
else:
return judge
danci = danci.replace('[','')
danci = danci.replace(']','')
if danci.find(";") != -1:
listu = danci.split(';')
for j in listu:
if len(j)>0 :
return j
if danci.find(",") != -1:
listu = danci.split(',')
for j in listu:
if len(j)>0 :
return j
return danci
elif hjson.has_key('query'):
danci=hjson['query']
if danci.find(";") != -1:
listu = danci.split(';')
for j in listu:
return j
return danci
return judge
while True:
msg=raw_input("Enter input:")
if msg == 'quit':
break
get_yinbiao(msg)
#youdao.get_translation(msg)
上代码: 支持 srt格式的字幕
# -*- coding: utf-8 -*-
import sys
import urllib2
import re
import json
import string
import os
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
class Youdao:
def __init__(self):
self.url = 'http://fanyi.youdao.com/openapi.do'
self.key = '1106591478'
self.keyfrom = 'left69'
def get_yinbiao(self,words):
splitStr = words
for c in string.punctuation:
if c != "'":
splitStr = splitStr.replace(c, ' ')
#print " "+splitStr
listu = splitStr.split(' ')
output = ""
for j in listu:
output = output + ' ' + self.SendGet(j)
return output
def SendGet(self,str):
judge = str.lower()
if judge.lower()=="it":
return "it"
if judge.lower()=="mr":
return "'miste(r)"
#print str
url = "http://fanyi.youdao.com/openapi.do?keyfrom="+self.keyfrom+"Trans&key="+self.key+"&type=data&doctype=json&version=1.1&q="+str
req = urllib2.Request(url)
res_data = urllib2.urlopen(req)
res = res_data.read()
#print res
if(res == "no query"):
return judge
hjson = json.loads(res)
#print hjson['basic']['uk-phonetic']
#danci = hjson['basic']['uk-phonetic']
if(hjson['errorCode']!=0):
return judge
if hjson.has_key('basic'):
if hjson['basic'].has_key('uk-phonetic'):
danci=hjson['basic']['uk-phonetic']
else:
return judge
danci = danci.replace('[','')
danci = danci.replace(']','')
if danci.find(";") != -1:
listu = danci.split(';')
for j in listu:
if len(j)>0 :
return j
if danci.find(",") != -1:
listu = danci.split(',')
for j in listu:
if len(j)>0 :
return j
return danci
elif hjson.has_key('query'):
danci=hjson['query']
if danci.find(";") != -1:
listu = danci.split(';')
for j in listu:
return j
return danci
return judge
youdao = Youdao()
srt_path = sys.path[0]
#print srt_path
os.chdir(srt_path)
FileNames = os.listdir(srt_path)
#print FileNames
#for d_file in FileNames:#
#if ('.txt' not in d_file and '.srt' not in d_file):
#continue
# print d_file
while True:
#file = open(d_file, 'r+','utf8')
d_file = raw_input("Enter file name:")
if d_file == 'q':
break
file = open(d_file, 'r+')
count = len(open(d_file, 'r+').readlines())
print count
w_file = d_file.split('.')[0] + "_out.txt"
#print w_file
Wfile = open(w_file,'w')
line = 0
pocess = 1
while 1:
line = line + 1
line2 = 1
data = file.readline()
if not data :
break
lines = line % 5
if lines == 3:
pp = pocess*500/count
ppp = '%d' %pp
pos = "Process:"+ppp + "%"
print pos
pocess = pocess+1
Wfile.write(data)
writedata=youdao.get_yinbiao(data)
Wfile.write(writedata+" ")
if lines == 4:
Wfile.write(data+" ")
Wfile.write("")
print "翻译 success!"
print " "
Wfile.close()
python有道批量单词音标整理-Python 批量翻译 使用有道api;相关推荐
- python有道批量单词音标整理-python实现有道翻译(逐行读文本)
本脚本调用有道的json实现翻译,不过缺点是大批量翻译时容易触发防爬虫规则,实际测试为:500条以上 易会触发规则 解决方法: 1.换IP(有效),本人采用的是跳板路由+VPN来解决 2.使用代理(未 ...
- 学python需要记得的单词_学习Python必背的初级单词有哪些?
今天小编要跟大家分享一些学习Python必须认识的英文单词,同时也是学习编程都必须会的单词,下面来和小编一起学习一下吧! application 应用程式 应用.应用程序 application fr ...
- python要背的单词_学Python必须背的42个常见单词,看看你都会吗?-Go语言中文社区...
adult [ˈædʌlt] 成年人 authentication [ɔːˌθentɪˈkeɪʃn] 身份验证.认证.鉴定 bit [bɪt] 稍微.小量.小块.一点 byte [baɪt] 字节.位 ...
- 学python的100个单词_200个Python学习单词请收藏
语音跟读,快速搜索查询 ↑ 一.交互式环 境与print输出 print : 打印-输出 coding : 编码 syntax : 语法 error : 错误 invalid : 无效 id ...
- python怎么读发音百度翻译-python selenium 爬取百度翻译单词音标-Go语言中文社区...
python selenium 小爬虫 主要流程 读取excel文件中的单词--利用selenium 去百度翻译中获取单词对应的音标--写入cvs文件 selenium 安装 环境配置略过 谷歌浏览器 ...
- 【Leetcode刷题Python】生词本单词整理
1 题目 小A最近在努力学习英语.小A有一本生词本,专门用来记录见到的生词.每次小A看到一个自己不认识的单词时,就会把这个生词抄写到生词本上.经过几个月的学习之后,小A想对这个生词本上的单词进行整理. ...
- python音标1003python音标_python selenium 爬取百度翻译单词音标
python selenium 小爬虫 主要流程 读取excel文件中的单词--利用selenium 去百度翻译中获取单词对应的音标--写入cvs文件 selenium 安装 环境配置略过 谷歌浏览器 ...
- python生词本的生词_【Anki小工具】有道生词本转Anki 1.0
简介 其实本人用有道词典有很长时间了,也特别喜欢有道的生词本功能,在发现了Anki之前我也一直用有道的单词本复习单词,虽然现在用Anki记单词了,不过也习惯用有道来收集单词,最后再导入到Anki中,因 ...
- python爬取有道词典_利用Python3和Charles爬取有道词典,生成翻译exe单文件
感觉挺好玩的,所以就转了,但我也做了定制化. 原文: 一.用Charles爬取数据(Windows用Fiddler也差不多) Charles是一个多平台的抓包工具,可以很方便的抓取http和https ...
- 整理Python常用库,看看哪些用过的?
链接:https://www.jianshu.com/p/2642f9d28f34 长文预警,2万字! 库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. coloram ...
最新文章
- 放在NSArray、NSDictionary等容器内的对象Item,Item中的property在程序运行过程中被无故释放...
- java 实现一段文字中,出现次数最多的字
- jQuery可放大预览的图片滑块
- 中国地区三级联动下拉菜单的实现
- java以Blob形式存储,读取图片并在jsp页面显示图片流
- 鼠标移入视频播放,鼠标移出播放停止,恢复到原来状态
- mysql索引的使用及优化方法_MySQL中索引和优化的用法总结
- java基础--IO流之File类
- java 如何关闭会话_java-在会话到期时关闭弹出窗口
- 攻克机器学习硕士学位,我的那些年与必备技能!
- 谷歌小姐姐搞出魔法画板:你随便画,补不齐算AI输
- python---之np.cumprod np.cumsum 累乘 累加
- scala文件通过本地命令运行
- 2022年1月舆情信息事件分析总结报告
- mysql身份证校验码_MySql整理篇之身份证提取生日性别
- android t渐变立体按钮,Android 多色渐变按钮
- C语言中EOF是什么意思? linux 【转载】 2020-11-19
- 【渝粤教育】21秋期末考试建筑工程计量与计价10517k1
- 使用Google Colab对PUBG的玩家死亡数据集进行可视化分析
- mysql的基础查阅
热门文章
- 感性电路电流计算_三相交流电怎么计算电功率?三相交流电功率计算公式
- CentOS7+华为交换机+Winserver2012配置KMS服务器开机自启和自动激活
- OpenWrt搭建KMS服务(Vlmcsd)
- 时间管理--番茄工作法
- 自动驾驶中的多种卡尔曼滤波算法及推导详解,值得一读!
- Access2016学习4
- C++实现双人对战五子棋(附源码)
- 如何修改pdf文件内容
- 联想计算机怎么设置硬盘,bios设置修改硬盘模式|联想笔记本BIOS设置硬盘模式教程...
- 华为荣耀7i刷linux,华为荣耀7i(ATH-AL00 全网通)ROOT教程,简单几步完成ROOT