python - python字符串格式中的可选空间

标签 python string-formatting

假设我有 3 个 python 字符串,我可以将它们全部格式化为 2 个分隔空格,如下所示:

h="hello"
m="my"
w="world"

print("{} {} {}".format(h,m,w))

或使用

print("%s %s %s" % (h,m,w))

现在假设我确定 h 和 w 都有值,但 m 可能是一个空字符串。上面的两个代码片段将产生 "hello{two speces here}world

我知道我可以使用不同的函数和条件表达式来通过代码进行格式化,例如在

print(h+" " + m+(" " if len(m)>0 else "") + w)

或者选择一个不同的格式化字符串

print(("{} {} {}" if len(m)>0 else "{}{} {}").format(h,m,w))

基于m的长度

我的问题是这可以使用格式字符串 完成吗? (例如,如果其参数不为空,将用 1 个空格填充的一些格式修饰符)。

最佳答案

不确定是否很方便,但有一种方法,根据字符串的“真实”值生成空间或不生成空间:

h="hello"
m="my"
w="world"

print("{}{}{}{}".format(h," "*bool(m),m,w))

结果:

hello my world

现在设置m为空字符串,你得到

hello world

关于python - python字符串格式中的可选空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46926882/

相关文章:

python - 我应该为 matplotlib 的动画使用哪个后端?

python - Selenium/WebDriver 脚本被警报中断 - 异常 "Message: u' 模态对话框存在'”

python - 为什么 Python 在格式化时将此字符串解释为字典?

sql - 在 SELECT 语句中调用函数时的性能

线程内的 Python 文件处理

python 列表索引越界

c# - 将任何数字格式化为三位数?

delphi - 当我给它一个负数时,为什么 Format with '%u' 打印出错误的值?

python - 在 while 循环条件中分配给函数返回值并捕获异常

optimization - Logger slf4j 使用 {} 格式化而不是字符串连接的优点