如何在Python的openpyxl中提取字符串的前两个字符?
解决openpyxl提取单元格字符串前两位赋值的问题
错误原因分析
你之前的写法都不符合Python和openpyxl的语法规则:
ws["A3":2]是选取单元格范围的语法,不是提取字符串内容的方式ws[A4]= ws["A3"]:2存在语法错误,目标单元格引用没加引号,且字符串切片的写法完全错误LEFT(sheet["A3"],2)是Excel内置函数的写法,不能直接在Python代码中调用
正确实现代码
要提取单元格字符串的前两位,需要先获取目标单元格的值,再用Python的字符串切片语法[:2]提取前两位,最后赋值给目标单元格:
import openpyxl # 加载工作簿 wb = openpyxl.load_workbook('c:/Users/me/myfolder/myfile.xlsx') # 选中工作表 ws = wb["mysheet"] # 获取A3单元格的值,提取前两位后赋值给A4 cell_value = ws["A3"].value if cell_value is not None and isinstance(cell_value, str): ws["A4"] = cell_value[:2] else: # 处理单元格为空或非字符串的情况,比如赋值空字符串 ws["A4"] = "" # 保存工作簿,否则修改不会生效 wb.save('c:/Users/me/myfolder/myfile.xlsx')
关键说明
- 必须通过
.value属性获取单元格的内容,直接引用ws["A3"]得到的是单元格对象,不是字符串值 - 字符串切片
[:2]会取字符串的前两个字符,如果原字符串长度不足2,会返回整个字符串(比如原内容是"R",则返回"R") - 增加空值和类型判断是为了避免
None或非字符串类型导致的报错 - 最后一定要调用
wb.save()保存修改,否则所有操作都不会写入到文件中
内容的提问来源于stack exchange,提问作者ohmandy
相关产品推荐
相关产品推荐

