pthon翻译googletrans案例

在对1600+行内容,进行中英互译时,发现报错:

一开始以为是文件内容或是语法问题,反复查验,未发现文件内容方面的问题;

语法方面,切换了多个googletrans版本,均出现报错;

最后把文档内容做了切分,发现数据记录相对较少的文件可以正常运转,排除语法方面问题;

经测试:但是每次报错的节点不一样,有时候198条内容报错,有时281条内容报错,每次都不一致,排除文件格式问题,经过多次尝试,怀疑是过度频繁的使用网页请求而被系统监测到,从而报错;

使用time.sleep()处理:

40条记录,休息10秒,ok;

50条记录,休息10秒,ok;

100条记录,休息10秒,报错;

1条记录,休息1秒,暂未报错(已运行500+条)

# import asyncio
import time
import numpy as np
from googletrans.client import Translator
import pandas as pd
filepath='/Users/kangyongqing/Downloads/'
file1='Location分布.xlsx'
df1=pd.read_excel(filepath+file1)
# df=df1[df1['location'].str.contains(r'[\u4e00-\u9fff]+')].copy()  #  \u4e00-\u9fff 是unicode中汉字的常用范围
df=df1.copy()
df['loc1']=''

translator=Translator()
# df['loc1']=df['location'].map(lambda x:translator.translate(x,dest='en').text)
k=1
i=0
# for i in range(i,len(df)):
#     print(i)
#     df.iloc[i, 1] = translator.translate(df.iloc[i, 0], dest='en').text
#     print(df.iloc[i, 1])
#     i+=1
#     if np.mod(i,40)==0:
#         df.iloc[(k-1)*40:i,:].to_excel(filepath + f'chuli到{(k-1)*40}到{i-1}条记录.xlsx')
#         k+=1
#         time.sleep(10)
#     elif i==len(df):
#         df.iloc[(k - 1) * 40:i, :].to_excel(filepath + f'chuli到{(k - 1) * 40}到{i - 1}条记录.xlsx')


# for i in range(i,len(df)):
#     print(i)
#     df.iloc[i, 1] = translator.translate(df.iloc[i, 0], dest='en').text
#     print(df.iloc[i, 1])
#     i+=1
#     if np.mod(i,50)==0:
#         df.iloc[(k-1)*50:i,:].to_excel(filepath + f'chuli到{(k-1)*50}到{i-1}条记录.xlsx')
#         k+=1
#         time.sleep(10)
#     elif i==len(df):
#         df.iloc[(k - 1) * 50:i, :].to_excel(filepath + f'chuli到{(k - 1) * 50}到{i - 1}条记录.xlsx')



for i in range(i,len(df)):
    print(i)
    df.iloc[i, 1] = translator.translate(df.iloc[i, 0], dest='en').text
    time.sleep(1)
    i+=1
    # if np.mod(i,500)==0:
    #     df.iloc[(k-1)*500:i,:].to_excel(filepath + f'chuli到{(k-1)*500}到{i-1}条记录.xlsx')
    #     k+=1
    #     time.sleep(10)
    # elif i==len(df):
    #     df.iloc[(k - 1) * 500:i, :].to_excel(filepath + f'chuli到{(k - 1) * 500}到{i - 1}条记录.xlsx')
df.to_excel(filepath+'fanyi.xlsx')





结果1:

结果2:

逐条监督运行,成功翻译1600+记录,并导出明细,达成目标:

pandas筛选含有汉字的行:

# df=df1[df1['location'].str.contains(r'[\u4e00-\u9fff]+')].copy()  #  \u4e00-\u9fff 是unicode中汉字的常用范围

附:googletrans升级可能导致报错,原来使用4.0.0rc1,后来升级成了4.0.2,就开始各种报错,找个半天原因,恢复成原版本即可正常使用

(  proxies: typing.Dict[str, httpcore.SyncHTTPTransport] = None)这种错误就是版本的原因导致的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值