对于程序员,我们有我们自己的撩妹办法。——用python替一个妹子解决批量翻译问题。

1,567 阅读2分钟
原文链接: blog.csdn.net
版权声明:如需转载,请联系本人。 https://blog.csdn.net/stronking/article/details/81569717

嗯,我是一个暖心肠的人,还是个程序员,虽然妹子也是一个程序猿,但是术业有专攻这句话可不是白说的,妹子做数据分析的,获取了大概6000多个分类单词,需要一点一点的翻译,大概一上午的时间吧,也就翻译了一千左右单词,这个效率太慢了。既耽误跟我聊天,还会容易因为我跟他聊天耽误工作,这样到头来怎么说也捞不到我的好啊,然后我就研究了一下,要不试试调用百度翻译或者是有道翻译的接口试试?然后,我就默默的来开始了查翻译的API,由于词汇量不多,所以调用了一下百度的,当然要是很多的话,百度是会收费的。嗯。。。。。。。好了,上代码!

#python3.6.5
# coding=utf-8
#Strong by 20180810

from hashlib import md5
from urllib import request
import random
import xlrd
import json


def fanyi(mes):
    appid = ''  # 你的appid
    secretKey = ''  # 你的密钥

    httpClient = None
    myurl = 'http://api.fanyi.baidu.com/api/trans/vip/translate' #api接口
    q = mes.replace(" ", "").replace("&", "")  #去除url中不符合的字符
    print(q)   #打印需要翻译的单词
    fromLang = 'en' #英语
    toLang = 'zh'  #中文
    salt = random.randint(32768, 65536) #生成随机数

    sign = (appid + q + str(salt) + secretKey) #密钥
    m1 = md5() #创建hash5
    m1.update(sign.encode("utf-8"))
    sign = m1.hexdigest() #生成加密字符串
    myurl2 = myurl + '?appid=' + appid + '&q=' + q + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(
        salt) + '&sign=' + sign
    # print(myurl2.replace(" ",""))
    req = request.Request(myurl2)#请求接口
    try:
        s = request.urlopen(req) #请求接口
    except Exception as e:
        print(e)
        return {"src": mes, "dst": mes}
    m = s.read().decode("utf-8")
    js = eval(m) 
    #生成字典
    print(js)
    trans_result = js["trans_result"]  
    #取值
    l = str(trans_result).strip("[").strip("]") 
    #洗数据
    a = eval(l) 
    #生成字典

    return a  #返回


def read():
    file_path = r'I:\1.xls'  #读取文件路径
    # 读取的文件路径
    # file_path = file_path.decode('ANSI')
    # 文件中的中文转码
    data = xlrd.open_workbook(file_path)   
    #打开excel文件 获取数据
    table = data.sheet_by_name('Sheet1')
    # 获取sheet
    nrows = table.nrows
    # 获取总行数
    ncols = table.ncols
    # 获取总列数

    f = open("D:/fanyi.xls", "w") 
     #将翻译好的数据写入这个文件
    er = open("D:/fanyicuowu.xls", "w") 
    #遇到错误写道这个文件里面
    print("行数", nrows)
    print("列数", ncols)
    for i in range(2, nrows, 1):
        for j in range(0, 4, 1):
            # print("i",i,"j",j)
            cell_value = table.cell(i, j).value  
            #去除单元格的值
            # print(cell_value)
            if cell_value == "":
                pass
            #     print("kkkkkkk")
            #     break
            else:
                print("i",i,"j",j,cell_value)
                a = fanyi(cell_value)   #翻译
                try:
                    f.write(a["src"] + "\t") 
                     #写入文件
                    f.write(a["dst"] + "\n")  
                    #写入文件
                except Exception as u:
                    print(u)
                    er.write(u + "\t")   
                    #将错误写入文件
                    er.write(cell_value + "\n") 
                    #写入出错的单词

    er.close()
    f.close()
    return None
if __name__ == '__main__':
    read()

用了大概两个小时时间,成功解决他需要两天左右时间要完成的工作量。

虽然有可能撩不到,但是自己也学习了呀,是不是,敲代码是最重要的,作为一个程序员,怎么可能不敲代码?so,这是一个动力,说不定哪天妹子就被撩到了呢。