1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > python有道批量单词音标整理-Python 批量翻译 使用有道api;

python有道批量单词音标整理-Python 批量翻译 使用有道api;

时间:2021-11-18 05:01:00

相关推荐

python有道批量单词音标整理-Python 批量翻译 使用有道api;

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

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

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

一开始没想到该怎么搞,,之后突然想到了利用有道api网页翻译来做每个单词的音标翻译;

选择了python语言来写;也想过用C#或者c++来做,但是要用到curl库,解析json代码也麻烦;就直接用python写了;

有道翻译api网站: 需要申请key,直接替换 self.key = 'xxxx' self.keyfrom = 'xxxx' 就可以了

/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 = '/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 = "/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 = '/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 = "/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()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。