从Excel复制粘贴到Python Shell时空格丢失如何解决
问题根因
这个现象和input()函数的配置无关,是Python 3.7 自带IDLE Shell在Windows平台的已知剪贴板处理bug:粘贴操作发生时,Shell层就已经把内容里的连续空格、制表符过滤掉了,被篡改后的内容才会传入input()的读取逻辑。input()本身没有任何主动删除空白字符的行为——它默认会完整保留输入流中所有字符直到遇到换行符,不存在可以调整空白识别规则的配置参数。
无需读取Excel文件的临时解决方案
- 引号包裹粘贴法
等Shell弹出input()输入提示符后,先手动输入1个英文单引号',再粘贴从Excel复制的内容,粘贴完成后在内容末尾补1个英文单引号,随后删掉前后两个手动加的单引号,按回车提交即可。该方法触发IDLE的字符串原始内容保留逻辑,不会自动修剪中间的空白字符,空格、制表符都会被完整保留。 - 占位符中转法
复制Excel单元格内容后,先粘贴到系统记事本,把内容里的空格、制表符统一替换为文本中不会出现的特殊标记(比如###),再把替换后的内容粘贴到Shell输入框提交,代码拿到输入结果后,用.replace('###', ' ')、.replace('###', '\t')把占位符换回对应空白字符即可。 - 版本升级法
该IDLE粘贴吞空白的bug在Python 3.8及后续正式版本中已经被修复,如果运行环境允许升级,直接更换3.8+版本的官方IDLE,即可直接粘贴保留所有空白格式,不需要额外操作。
注意:不要浪费时间调整
input()的传参,该函数从设计上就没有提供控制空白字符保留/过滤的配置项,所有类似问题的故障点都在输入终端的粘贴处理层,和函数本身逻辑无关。
内容的提问来源于stack exchange,提问作者jzargo
相关产品推荐
相关产品推荐

