给一篇字数不确定的英文做机翻
程序员文章站
2022-05-03 23:41:57
项目场景:给一篇字数不确定的英文做机翻给一篇英文文章做机翻,字数不确定,调用谷歌翻译,但限制字符不超过5000问题描述:因为是英文,不能按照字符刚好是5000时卡住,只翻译前5000个字符,这样有可能将一个单词或短语给拆分,翻译结果有误解决方案:将英文文章按段落‘\n’切分,再一段一段进行拼接,如果拼接到某一段落时超出字符限制,将那一段落算到下一次翻译原文中,代码如下:def split_long(web_text, limit=4800): ''' 用于长字....
项目场景:
给一篇英文文章做机翻,字数不确定,调用谷歌翻译,但限制字符不超过5000
问题描述:
因为是英文,不能按照字符刚好是5000时卡住,只翻译前5000个字符,这样有可能将一个单词或短语给拆分,翻译结果有误
解决方案:
将英文文章按段落‘\n’切分,再一段一段进行拼接,如果拼接到某一段落时超出字符限制,将那一段落算到下一次翻译原文中
代码如下:
def split_long(web_text, limit=4800):
'''
用于长字符串按指定限制长度进行分割
如果未指定长度,则按4800分割,用于调用谷歌翻译接口
调用方法:使用循环调用
strings = split_long(web_text, limit=4800)
1、 for 循环
for s in strings:
print(s)
2、while 循环
while True:
try:
s = next(strings)
# s = strings.__next__()
print(s)
except StopIteration:
break
:param web_text: 网页文本的长度
:param limit: 限定的长度,默认为4800
:return:
'''
# 通过 \n 构建网页字符串的分段列表 source
source = web_text.split('\n')
f = "" # 初始化空字符串 f
while len(source) > 0: # 循环条件,当分段列表 source 变为空的时候停止循环
# 取出列表中的第一个元素赋值给 a
a = source.pop(0)
# 拼接字符串 f 并将其赋值给 f1
f1 = f + a + "\n"
if len(f1) > limit: # 当 f1 的长度大于限定长度时
# 长度大于限定长度则将 a 还给分段列表 source, 用于下次的重新取出
source.insert(0, a)
# 将最大限度拼接好的字符串 f 返回出去
yield f
f = "" # 重新初始化字符串 f 为空字符串,用于下次的拼接
else: # 否则 字符串 f 的值为 拼接好的 f1 的值,继续进行拼接
f = f1
# 当循环停止后,返回最后拼接的字符串 f
yield f
调用后的结果是个迭代器,所以循环打印或机翻即可
代码如下:
for i in split_long(detail):
print(len(i))
# 调用机翻
# Googletrans(i)
本文地址:https://blog.csdn.net/yl_1995/article/details/109613196