Windows导出含特殊字符编码异常的Excel文件Python3处理方案咨询
Python3 处理Windows Excel编码替换问题
方案1:批量替换异常字符(针对字符本身错误)
如果Excel中实际存储的字符与目标字符不符(比如右单引号\u2019代替了普通单引号'),可以用pandas批量替换所有文本列的异常字符:
- 安装依赖库:
pip install pandas openpyxl
- 处理代码:
import pandas as pd # 定义异常字符与目标字符的映射关系 replacement_map = { '\u2019': "'", # 替换右单引号为普通单引号 '\u00e9': 'é', # 替换对应字符为é '\x90m': 'É' # 替换\x90m为É } # 读取Excel文件 df = pd.read_excel('your_input_file.xlsx') # 遍历所有文本类型列,执行替换 for col in df.select_dtypes(include=['object']).columns: df[col] = df[col].replace(replacement_map, regex=True) # 保存修复后的文件 df.to_excel('fixed_output_file.xlsx', index=False)
方案2:处理Unicode转义字符串(针对显示为转义文本的情况)
如果Excel中显示的是\u2019、\u00e9这类转义字符串而非对应字符,可以先解析转义再替换:
import pandas as pd import ast def resolve_escapes(text): if isinstance(text, str): try: # 解析Unicode转义字符串 return ast.literal_eval(f'"{text}"') except (SyntaxError, ValueError): # 解析失败则返回原文本 return text return text # 读取文件 df = pd.read_excel('your_input_file.xlsx') # 先解析转义,再执行字符替换 for col in df.select_dtypes(include=['object']).columns: df[col] = df[col].apply(resolve_escapes) df[col] = df[col].replace({'\\x90m': 'É'}, regex=True) # 保存文件 df.to_excel('fixed_output_file.xlsx', index=False)
补充说明
- 若处理
.xls格式文件,需安装xlrd库(注意xlrd 2.0+版本不再支持xls格式,需安装xlrd==1.2.0)。 - 替换映射可根据实际情况调整,确保键是Excel中实际存在的异常内容,值为目标字符。
内容的提问来源于stack exchange,提问作者Benjamin Breton
相关产品推荐
相关产品推荐

