下面是详细的Python批量翻译Excel表格中的英文的完整实例教程。
步骤1:安装必要的库
首先,我们需要安装几个必要的Python库,包括:
openpyxl
: 用于读取和写入Excel文件。googletrans
: 用于调用Google翻译API进行翻译。
可以通过以下命令来安装:
pip install openpyxl googletrans==4.0.0-rc1
这里需要注意的是,由于Google翻译API在较新版本中发生了变化,因此我们需要安装4.0.0-rc1版本的googletrans
库。
步骤2:编写代码
在安装完必要的库之后,我们就可以开始编写Python脚本来批量翻译Excel表格中的英文了。下面是完整的示例代码:
from openpyxl import load_workbook
from googletrans import Translator
# 加载Excel文件
filename = 'test.xlsx'
wb = load_workbook(filename)
sheet = wb.active
# 实例化Google翻译API
translator = Translator()
# 逐行翻译英文列
for row in sheet.iter_rows(min_row=2, values_only=True):
en_text = row[0]
if en_text:
cn_text = translator.translate(en_text, dest='zh-CN').text
row[1] = cn_text
# 保存翻译结果
wb.save(f'translated_{filename}')
以上代码可以实现以下功能:
- 加载指定Excel文件。
- 实例化Google翻译API。
- 逐行读取英文列,并调用Google翻译API进行翻译。
- 将翻译结果保存到中文列中。
- 保存修改后的Excel文件。
需要注意的是,上述代码中的test.xlsx
文件必须包含英文文本和空白的中文列,如下所示:
English | Chinese |
---|---|
Hello | |
World | |
Python |
示例说明1:翻译多个Excel文件
如果要翻译多个Excel文件,我们可以使用Python的os
库来进行文件遍历。
下面是示例代码,可以用于遍历指定目录下的所有Excel文件,并将英文列翻译为中文列:
import os
from openpyxl import load_workbook
from googletrans import Translator
# 指定目录
dirpath = '/path/to/folder'
# 实例化Google翻译API
translator = Translator()
# 遍历目录下的所有Excel文件
for filename in os.listdir(dirpath):
if filename.endswith('.xlsx'):
filepath = os.path.join(dirpath, filename)
wb = load_workbook(filepath)
sheet = wb.active
# 逐行翻译英文列
for row in sheet.iter_rows(min_row=2, values_only=True):
en_text = row[0]
if en_text:
cn_text = translator.translate(en_text, dest='zh-CN').text
row[1] = cn_text
# 保存翻译结果
new_filename = f'translated_{filename}'
wb.save(os.path.join(dirpath, new_filename))
以上代码会遍历指定目录下的所有.xlsx
文件,并对每个文件进行英文到中文的翻译。翻译结果会保存到以translated_
为前缀的新文件中。
示例说明2:忽略已翻译的单元格
如果要重复运行翻译脚本,可能会遇到已经翻译过的单元格被重新翻译的情况。为了避免这种情况,我们可以在已翻译的单元格中添加标记,然后在脚本中忽略这些单元格。
下面是示例代码,可以用于忽略已经翻译过的单元格:
from openpyxl import load_workbook
from googletrans import Translator
# 加载Excel文件
filename = 'test.xlsx'
wb = load_workbook(filename)
sheet = wb.active
# 实例化Google翻译API
translator = Translator()
# 逐行翻译英文列
for row in sheet.iter_rows(min_row=2, values_only=True):
en_text = row[0]
cn_text = row[1]
if en_text and not cn_text.startswith('*'):
new_cn_text = translator.translate(en_text, dest='zh-CN').text
row[1] = f'*{new_cn_text}'
# 保存翻译结果
wb.save(f'translated_{filename}')
以上代码中,我们使用了以*
为前缀的标记来标识已经翻译过的单元格。这样,在执行脚本时,只会对未被标记的单元格进行翻译。
当然,如果需要重新对已经翻译过的单元格进行翻译,只需要删除对应的标记即可。
总结
通过上述示例代码,我们可以快速实现Python批量翻译Excel表格中的英文。当然,这只是一个简单的示例,实际的应用场景可能会更复杂。但是,通过学习和理解上述代码,可以帮助我们更好地应用Python进行数据处理和自动化任务。