如何用pylightxl将Excel转为字典实现Python西班牙语翻译器
基于pylightxl实现Excel驱动的西班牙语翻译器
问题背景
原本通过字典实现了一个简单的西班牙语翻译器,代码如下:
translate = input("input: ") translate_dictionary = { "Hello": "Hola", "Goodbye": "adiós" } for english, spanish in translate_dictionary.items(): translate = translate.replace(english, spanish) print(translate)
现在希望改用pylightxl读取Excel文件实现翻译,Excel内容如下:
| A | B |
|---|---|
| Hello | Hola |
| Goodbye | adiós |
目标是将Excel的A列文本作为键,B列作为值构建翻译字典,替换用户输入中的对应内容,但当前编写的pylightxl代码存在问题:
import pylightxl as xl translate = input("input: ") db = xl.readxl(fn='translate_library.xlsx') for english, spanish in str(db): translate = translate.replace(db.ws(ws='Sheet1').address(address='A1'), db.ws(ws='Sheet1').address(address='B1')) print(translate)
代码问题分析
- 错误地将数据库对象
db转为字符串遍历,完全不符合pylightxl的使用逻辑 - 硬编码了
A1和B1单元格地址,只会替换这一组内容,无法遍历所有翻译条目
正确实现代码
import pylightxl as xl # 获取用户输入 translate_input = input("input: ") # 读取Excel文件并指定工作表 db = xl.readxl(fn='translate_library.xlsx') ws = db.ws('Sheet1') # 从Excel中构建翻译字典:A列(第1列)为键,B列(第2列)为值 translate_dict = {} # 从第2行开始遍历(第1行是表头) for row_num in range(2, ws.nrows + 1): english_text = ws.address(row=row_num, col=1) spanish_text = ws.address(row=row_num, col=2) translate_dict[english_text] = spanish_text # 遍历字典执行文本替换 for eng, spa in translate_dict.items(): translate_input = translate_input.replace(eng, spa) # 输出翻译结果 print(translate_input)
代码说明
- 使用
ws.nrows获取工作表总行数,确保遍历所有数据行 - 通过
row和col参数动态定位单元格,避免硬编码固定地址 - 先构建完整的翻译字典,再执行替换逻辑,和原字典实现的逻辑保持一致,保证兼容性
内容的提问来源于stack exchange,提问作者ctrl_c_ctrl_v
相关产品推荐
相关产品推荐

