妹子是做翻译相关的,遇到个问题,要求得到句子中的所有单词的 音标;

有道翻译只能对单个单词翻译音标,不能对多个单词或者句子段落翻译音标;

手工一个一个翻的话那就要累死人了.....于是就让我写个翻译音标工具

一开始没想到该怎么搞,,之后突然想到了利用有道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;相关推荐

  1. python有道批量单词音标整理-python实现有道翻译(逐行读文本)

    本脚本调用有道的json实现翻译,不过缺点是大批量翻译时容易触发防爬虫规则,实际测试为:500条以上 易会触发规则 解决方法: 1.换IP(有效),本人采用的是跳板路由+VPN来解决 2.使用代理(未 ...

  2. 学python需要记得的单词_学习Python必背的初级单词有哪些?

    今天小编要跟大家分享一些学习Python必须认识的英文单词,同时也是学习编程都必须会的单词,下面来和小编一起学习一下吧! application 应用程式 应用.应用程序 application fr ...

  3. python要背的单词_学Python必须背的42个常见单词,看看你都会吗?-Go语言中文社区...

    adult [ˈædʌlt] 成年人 authentication [ɔːˌθentɪˈkeɪʃn] 身份验证.认证.鉴定 bit [bɪt] 稍微.小量.小块.一点 byte [baɪt] 字节.位 ...

  4. 学python的100个单词_200个Python学习单词请收藏

    语音跟读,快速搜索查询 ↑ 一.交互式环 境与print输出 print :  打印-输出 coding :  编码 syntax :  语法 error :  错误 invalid :  无效 id ...

  5. python怎么读发音百度翻译-python selenium 爬取百度翻译单词音标-Go语言中文社区...

    python selenium 小爬虫 主要流程 读取excel文件中的单词--利用selenium 去百度翻译中获取单词对应的音标--写入cvs文件 selenium 安装 环境配置略过 谷歌浏览器 ...

  6. 【Leetcode刷题Python】生词本单词整理

    1 题目 小A最近在努力学习英语.小A有一本生词本,专门用来记录见到的生词.每次小A看到一个自己不认识的单词时,就会把这个生词抄写到生词本上.经过几个月的学习之后,小A想对这个生词本上的单词进行整理. ...

  7. python音标1003python音标_python selenium 爬取百度翻译单词音标

    python selenium 小爬虫 主要流程 读取excel文件中的单词--利用selenium 去百度翻译中获取单词对应的音标--写入cvs文件 selenium 安装 环境配置略过 谷歌浏览器 ...

  8. python生词本的生词_【Anki小工具】有道生词本转Anki 1.0

    简介 其实本人用有道词典有很长时间了,也特别喜欢有道的生词本功能,在发现了Anki之前我也一直用有道的单词本复习单词,虽然现在用Anki记单词了,不过也习惯用有道来收集单词,最后再导入到Anki中,因 ...

  9. python爬取有道词典_利用Python3和Charles爬取有道词典,生成翻译exe单文件

    感觉挺好玩的,所以就转了,但我也做了定制化. 原文: 一.用Charles爬取数据(Windows用Fiddler也差不多) Charles是一个多平台的抓包工具,可以很方便的抓取http和https ...

  10. 整理Python常用库,看看哪些用过的?

    链接:https://www.jianshu.com/p/2642f9d28f34 长文预警,2万字! 库名称简介 Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. coloram ...

最新文章

  1. 放在NSArray、NSDictionary等容器内的对象Item,Item中的property在程序运行过程中被无故释放...
  2. java 实现一段文字中,出现次数最多的字
  3. jQuery可放大预览的图片滑块
  4. 中国地区三级联动下拉菜单的实现
  5. java以Blob形式存储,读取图片并在jsp页面显示图片流
  6. 鼠标移入视频播放,鼠标移出播放停止,恢复到原来状态
  7. mysql索引的使用及优化方法_MySQL中索引和优化的用法总结
  8. java基础--IO流之File类
  9. java 如何关闭会话_java-在会话到期时关闭弹出窗口
  10. 攻克机器学习硕士学位,我的那些年与必备技能!
  11. 谷歌小姐姐搞出魔法画板:你随便画,补不齐算AI输
  12. python---之np.cumprod np.cumsum 累乘 累加
  13. scala文件通过本地命令运行
  14. 2022年1月舆情信息事件分析总结报告
  15. mysql身份证校验码_MySql整理篇之身份证提取生日性别
  16. android t渐变立体按钮,Android 多色渐变按钮
  17. C语言中EOF是什么意思? linux 【转载】 2020-11-19
  18. 【渝粤教育】21秋期末考试建筑工程计量与计价10517k1
  19. 使用Google Colab对PUBG的玩家死亡数据集进行可视化分析
  20. mysql的基础查阅

热门文章

  1. 感性电路电流计算_三相交流电怎么计算电功率?三相交流电功率计算公式
  2. CentOS7+华为交换机+Winserver2012配置KMS服务器开机自启和自动激活
  3. OpenWrt搭建KMS服务(Vlmcsd)
  4. 时间管理--番茄工作法
  5. 自动驾驶中的多种卡尔曼滤波算法及推导详解,值得一读!
  6. Access2016学习4
  7. C++实现双人对战五子棋(附源码)
  8. 如何修改pdf文件内容
  9. 联想计算机怎么设置硬盘,bios设置修改硬盘模式|联想笔记本BIOS设置硬盘模式教程...
  10. 华为荣耀7i刷linux,华为荣耀7i(ATH-AL00 全网通)ROOT教程,简单几步完成ROOT