使用固定长度和空格填充格式化整数的正确方法

2023-12-28

我有 0 到(包括)100 范围内的整数。我想将它们转换为固定长度 3 的字符串,并带有空格填充和右侧对齐。

我尝试使用以下格式字符串,但它为三位数添加了另一个空格,这使得它们的长度为 4 而不是 3。

fmt = lambda x: "{: 3d}".format(x)
[fmt(99), fmt(100)] # produces [' 99', ' 100'] instead of [' 99', '100']

有趣的是,当使用零填充时它会按预期工作:

fmt = lambda x: "{:03d}".format(x) 
[fmt(99), fmt(100)] # produces ['099', '100'] as expected

为什么是这样?我怎样才能解决这个问题?

我真的需要先转换为字符串吗?

fmt = lambda x: "{:>3s}".format(str(x))
[fmt(99), fmt(100)] # produces [' 99', '100'] as expected

默认情况下,数字右对齐并在格式化时用空格填充,因此您应该只指定width:

>>> '{:3d}'.format(99)
' 99'
>>> '{:3d}'.format(100)
'100'

或者,您可以同时指定fill性格和结盟:

>>> '{: >3d}'.format(99)
' 99'
>>> '{: >3d}'.format(100)
'100'

然而,宽度之前的单个空格被视为sign选项。引用文档 https://docs.python.org/3/library/string.html#formatspec:

符号选项仅对数字类型有效,并且可以是其中之一 下列的:

'+'表示一个符号既可以表示积极的也可以表示积极的 负数。
'-'表示符号只能用于负数 (这是默认行为)。
' '表示前导空格 应该用于正数,负号用于负数 数字。

这就是为什么"{: 3d}"示例中带有前导空格的格式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用固定长度和空格填充格式化整数的正确方法 的相关文章

随机推荐

  • 在编写CodeRunner文档时如何包含非框架库?

    我一直在使用代码运行者 http krillapps com coderunner 收集开发时经常使用但不一定属于项目代码库的小块代码 它是一个很棒的 Objective C 和 Cocoa 总结工具 因为我可以包含安装在我的机器上的框架
  • 如何以编程方式设置按钮的权重

    我需要通过 Java 代码为我的 Android 应用程序实现 Dialog 所以我不能使用 XML 我有根LinearLayout在我实现范围搜索栏的地方 然后我有另一个LinearLayout在根布局下 水平方向 我想在同一行中添加两个
  • 有没有办法在 After 方法中使用 ITestResult 获取完整的错误/异常?

    Test priority 16 enabled true public void C2410859 FilterAlertsByCard throws IOException InterruptedException ATUTestRec
  • Javascript JsTestDriver Jasmine & Jasmine-jquery

    我有很多 Jasmine 单元测试 它们正在为 Javascript 代码运行单元测试 他们使用 Jasmine jquery 插件来进行 DOM 操作 他们使用 loadFixture 来加载 HTML 的固定装置 我尝试使用 JsTes
  • WPF 与 Windows 窗体 [重复]

    这个问题在这里已经有答案了 复制 WPF 与 WinForms 或丰富的 UI 与稳定的应用程序 您如何看待 Windows 窗体平台的未来 https stackoverflow com questions 442667 wpf vs w
  • 如何在 Python 3 中停止执行 exec 命令?

    我有以下代码 code print foo if True return print bar exec code print This should still be executed 如果我运行它 我会得到 Traceback most
  • Angular 2——模拟——没有 HTTP 提供者

    Angular 2 0 0 Ionic 2 RC0 Npm 3 10 8 Node v4 5 0 Karma 1 3 0 Jasmine 2 5 2 我正在尝试使用 Karma Jasmine 测试我的应用程序 现在我已经遵循了一些指南 我
  • EC2 网络错误:连接超时

    我创建了一个 Linux 的 EC2 微型实例并启动了它 创建了一个密钥对以及该视频中指定的所有开始内容 http www youtube com watch v hJRSti6DsJg http www youtube com watch
  • java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder

    我正在学习 springboot 和微服务 我已经创建了 3 个服务 并且都运行良好 现在我已经创建了发现服务器 使用 start spring io 添加 Eureka Server 作为依赖项 我的pom xml如下
  • 如何获取 wav 文件中的频率列表

    我正在尝试解码一些音频 这些音频基本上是两个频率 0 为 200hz 1 为 800hz 可以直接转换为二进制 音频样本 https i stack imgur com BPa30 jpg 此示例翻译为 1001011 第三个频率为 160
  • 将 asp.net 5 MVC 6 与 Identity 和 EF 6 结合使用的示例

    我正在使用 asp net 5 和 MVC 6 设置一个新项目 但由于 EF 7 中缺少功能 我想使用 Entity Framework 6 我设置了 EF 6 1 3 并且可以正常工作 Identity 3 0 依赖于 EF 7 因此我已
  • VisualVM 中加载的类

    我的应用程序的堆内存出现问题 我尝试使用 VisualVM 来查找内存泄漏 有件事我无法理解 在 采样器 选项卡中 当我按下 内存 按钮时 我会看到数千个具有实例的类 如果我在 Profiler 选项卡中执行相同的操作 我会看到更少的类 这
  • 用限制分割字符串,其中最后一个字符串包含余数

    例如如果我运行这个 JavaScript var str hello world there var parts str split 2 var p1 parts 0 var p2 parts 1 最后 p1 包含 hello p2 包含
  • d3.js 中的分层图

    我目前正在使用 Graphviz 来可视化控制流图 基本上 可简化的 控制流图是一个 DAG 加上一些指向前一层中的节点的边 后面的边不应影响节点的放置 现在 dot绘制的图形相当整齐 但它缺乏一种简单的方法来添加交互性 例如折叠 滚动 缩
  • 了解可变 Seq

    我对 Scala 还很陌生 并尝试了解可变的Seq 因为是在包里的mutable我期望有一种方法可以让我们在不复制整个集合的情况下追加元素 但没有 方法中的mutable Seq 但在Buffer is and 两者都复制该集合 那么为什么
  • 注册时出错:NoCredentialProviders:链 ECS 代理错误中没有有效的提供程序

    我正在尝试使用 EC2 容器服务 我使用 terraform 来创建它 我已经定义了ecs集群 自动缩放组 启动配置 一切似乎都有效 除了一件事 ec2 实例正在创建 但它们没有在集群中注册 集群只是说没有可用的实例 在创建的实例上的 ec
  • Xmlstarlet - 将一个属性的值复制到另一个属性(如果元素中存在)

    我刚刚了解了 xmlstarlet 但不幸的是我在 XML 方面遇到了很大的困难 所以我希望我能得到一些帮助 比如说 我有这个 XML 文件 test xml
  • Google Sheet API V4(Java) 在单元格中附加日期

    我尝试在单元格中添加日期 但工作表自动将值存储在带有单引号的字符串中 对于在日期中存储值 我们还尝试添加userEnteredFormat但这对我们不起作用 以下是附加请求 requests appendCells fields userE
  • 如何检查鼠标单击是否位于 JavaScript 中 HTML5 Canvas 上的旋转文本内?

    我已经在画布上以坐标 X Y 绘制了文本并保存了它们 我有一个简单的方法来检查鼠标单击是否发生在文本边界内 问题是当我将文本旋转 45 度时 我无法检查旋转文本中是否发生了鼠标单击 简而言之 如何检查鼠标单击是否在旋转的文本或形状内 创建一
  • 使用固定长度和空格填充格式化整数的正确方法

    我有 0 到 包括 100 范围内的整数 我想将它们转换为固定长度 3 的字符串 并带有空格填充和右侧对齐 我尝试使用以下格式字符串 但它为三位数添加了另一个空格 这使得它们的长度为 4 而不是 3 fmt lambda x 3d form