首页 > 解决方案 > 两个格式化字符串合二为一,只有一个值

问题描述

我想要一个字符串,我可以用整数格式化它,以便它:

  1. 在整数前面添加一个符号(+ 表示正整数,- 表示负整数)
  2. 用括号括住有符号的 int(即用 ())
  3. 将 int 与左侧的括号左对齐,必要时在末尾添加空格。

我知道如何分别执行这些步骤,但我无法将它们组合成一个字符串。
例如,1 和 2 将完成'({:+d})'.format(3),这将导致(+3).
3 对带有 的任意字符串完成'{:<5}'.format(3),这将导致3 (4 个尾随空格)。

我的目标是有一个字符串,我只能调用.format一次,因此
format_string.format(3)
会导致
(+3)
一个尾随空格使字符串长度为 5。

这可能吗?

我已经尝试过({{:+d}:<5}),但这不起作用,因为它认为{:+d}是要格式化的字段名称<5,显然不是这样。
我还研究了 f 字符串,但这些不适合我的用例,因为我.format在创建格式字符串之后才调用它。

任何帮助都将受到欢迎!

标签: pythonpython-3.xformatting

解决方案


一次调用的解决方案format

def special_format_int(n, SPACES=5):
    return '({:+d})'.format(n).ljust(SPACES)

推荐阅读