Python 3.12.3打印元组遇语法错误:存在不可打印字符U+200B
解决Python中不可打印字符U+200B导致的语法错误问题
问题场景
在Python 3.12.3环境中编写代码,尝试将days元组与steps列表的元素一一配对存入新列表后打印,却触发语法错误,提示存在不可打印字符U+200B。即使单独执行print(days[0])也无法正常输出。
原始代码如下:
days = ('пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс') steps = [5252, 785875, 7858, 787, 8755, 877, 597] rar = [] for i in range(len(days)): typle = days[i], steps[i] rar.append(typle) print(rar)
问题原因
U+200B是零宽空格,属于不可打印的控制字符,通常是从网页复制代码、使用某些输入法或文本编辑工具时无意中引入的。Python解释器会将其视为代码语法的一部分,导致解析失败,即使看似无关的代码行也会受影响。
解决方法
- 手动清理可疑行:删除代码中存在隐藏字符的行(比如问题中的
rar = []行),然后手动重新输入这些内容,确保没有引入不可打印字符。 - 编辑器辅助定位:使用支持显示控制字符的文本编辑器(如VS Code开启"控制字符可见性"功能),直接定位并删除U+200B字符。
优化后的代码
除了修复字符问题,还可以用Python内置的zip()函数简化配对逻辑,避免手动索引循环:
days = ('пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс') steps = [5252, 785875, 7858, 787, 8755, 877, 597] rar = list(zip(days, steps)) print(rar)
内容的提问来源于stack exchange,提问作者Angry Fox
相关产品推荐
相关产品推荐

