1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 简体字转繁体字------- 如何将简体字文章翻译成繁体字 并加上拼音 python

简体字转繁体字------- 如何将简体字文章翻译成繁体字 并加上拼音 python

时间:2021-03-09 16:13:55

相关推荐

简体字转繁体字------- 如何将简体字文章翻译成繁体字 并加上拼音 python

这些天遇到了一个小问题,我的好朋友拿着一篇pdf来问我,如何把里面的简体字提取出来,翻译成繁体字,同时保留原来的拼音呢。一开始她用word打开pdf然后使用翻译功能,但效果并不好。作为一个预备软件工程师,当然会想到写一个程序来解决问题!

当然第一想法就是写不如抄啦,火速搜索了一下,发现已经有人帮我把主要处理模块写好了:

点击这里跳转

所以我的任务就更简单了,由于我要处理的是文本文件,所以我自己完成文件处理模块,然后服用链接的代码就ojbk了

首先我们观察要处理的这个pdf:

它在用word打开,然后转为txt格式后,会出现一个格式上的问题:

我们发现拼音和文字处于同一行了,而且拼音带上了括号。所以我们要提前做一个预处理工作,把所有的文字提取出来,保留除了括号以外的符号。

def reader(file_name):with open(file_name, 'r', encoding='utf-8') as file_obj:content = file_obj.read()# print(content)file_obj.close()return content#使用apiline_chs = reader("input.txt")#定义处理所有的括号的函数def get_words(ret_chs):nr = ""i = 0while i < len(ret_chs):if ret_chs[i] != '(':nr = nr + ret_chs[i]i = i + 1else:while i < len(ret_chs) and ret_chs[i] != ')':i = i + 1i = i + 1return nrdef writer(file_name, content):with open(file_name, 'w', encoding='utf-8') as file_obj:file_obj.write(content)file_obj.close()# 转换繁体到简体def cht_to_chs(line):line = Converter('zh-hans').convert(line)line.encode('utf-8')return line# 转换简体到繁体def chs_to_cht(line):line = Converter('zh-hant').convert(line)line.encode('utf-8')return line#简体转繁体ret_chs = chs_to_cht(line_chs)#获取没有括号的文字段nr=get_words(ret_chs)writer("output2.txt", nr)

将文件保存,展示一下效果:

然后就是添加拼音的环节了,我们需要拼音库:

import pypinyin

考虑到文字和拼音的易读性,我们要调整间距,使得排版较为好看,我的做法是给每个文字中间加空格:

def pinyin(word):s = ''for i in pypinyin.pinyin(word, style=pypinyin.NORMAL):s += ''.join(i)return sdef split_line(word):s = ''for i in word:s += iif i == ' ':continues += " "return s#把所有output2里面的文字按行为单位,放入列表中 便于格式控制usr_list = []for line in open("output2.txt", 'r', encoding='utf-8'):s = ''for i in line:s = s + ''.join(i) + " "usr_list.append(s)#获得所有的字的拼音pinyin_list = []for line in usr_list:pinyin_list.append(yinjie(line))words = []for line in usr_list:words.append(split_line(line))#给字加空格words = []for line in usr_list:words.append(split_line(line))#一行拼音 一行文字的打印i = 0with open("finaloutput.txt", 'w', encoding='utf-8') as file_obj:while i < len(usr_list):print(pinyin_list[i])file_obj.write(pinyin_list[i])file_obj.write(words[i])print(words[i])i += 1file_obj.close()

然后我们看到程序运行的结果:

虽然还不是很好看,但已经很好的完成预定目标了

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