You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

旧%格式字符串转.format时遇ValueError:格式符不允许空格

解决Python .format()格式化时的"Space not allowed in string format specifier"错误

错误原因

在旧的%格式语法里,% 20s中的空格是冗余的——对于字符串类型的格式符s来说,% 20s和%20s的效果完全一致,都是实现右对齐、总宽度20、不足时用空格填充的格式化。

但.format()的格式规范和%语法不同:空格是数值类型专属的符号设置(用来在正数前添加空格),字符串类型的格式符不支持这个设置。当你写{: 20s}时,解析器会把空格识别成无效的格式标记,直接抛出ValueError。

等效的正确写法

要实现原% 20s的效果,直接去掉格式符里的空格即可,有几种等价写法:

  1. 显式指定字符串类型和宽度:

    'Map:     {:20s}'.format(name)
    
  2. 省略类型符s(.format()会自动适配输入的字符串类型):

    'Map:     {:20}'.format(name)
    
  3. 显式标注右对齐(默认就是右对齐,可选,用于提高可读性):

    'Map:     {:>20s}'.format(name)
    

这些写法都能实现原代码的格式化效果,同时避免报错。

内容的提问来源于stack exchange,提问作者Daraan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 00:47:42