Python如何将含b'…'与\x转义的CSV列头字符串转换为Unicode
遇到的问题
花费数小时排查处理逻辑,仍未找到合适方案:需要读取自动生成的CSV文件,读取到的列头存在两类异常格式:
- 简单格式列头:
"b'Device Name' (b'')" - 带转义序列的复杂格式列头:
"b'Bezugsz\\xc3\\xa4hler' (b'Wh')"
处理目标
需要把上述格式的列头字符串统一转换为正常可识别的Unicode文本,通用逻辑需要同时满足两个要求:
- 移除所有包裹文本的
b'...'标识 - 解析字符串中存在的
\x格式转义序列,还原为对应的原生字符
最终期望得到的转换结果为:
"Device Name ()" "Bezugszähler (Wh)"
已验证无效的尝试方案
- 针对第一种简单格式的列头,直接用
replace()做硬替换可以实现转换,但这种写死替换规则的方法无法处理带\x转义的复杂场景,不满足通用处理的要求 - 尝试使用
ast.literal_eval()做字符串值解析,会被列头中的括号结构触发语法报错,无法正常运行 - 尝试对原字符串直接执行链式的
.encode().decode()操作,输出结果不符合预期,既没有正确移除b''标识,也没有正确解析转义内容
内容的提问来源于stack exchange,提问作者Phil K.
相关产品推荐
相关产品推荐

