python - 在 Python 中使用可能不存在的参数格式化字符串

标签 python string format

我搜索过这个,但我不确定如何表达我要问的内容,所以很难找到是否有人已经发布了解决方案。

我想将一些变量格式化为描述性字符串。例如:

'My name is {name}. I like to eat {food}.'.format(name='Ben', food='pizza')

给出(显然):'我的名字是本。我喜欢吃披萨。”

但如果 foodNone''(空),我想省略整个第二句。所以:

'My name is {name}. I like to eat {food}.'.format(name='Ben', food='')

给出:'我叫本。'

我可以在第二句周围加上一些东西,使其以 food 的非空值为条件吗?我可以通过连接字符串等以一种不优雅的方式来做到这一点,但我一直在寻找一种更 Pythonic 的解决方案。也许我需要子类化 Formatter,但我不确定从哪里开始。

(顺便说一句,我知道 Winamp 过去能够根据 MP3 文件中是否存在标签来在格式字符串中执行此操作。)

最佳答案

这是一个很好的问题,这种方法是一种解决方法

food = "Pizza"
FOOD = "I like to eat {food}".format(food = food)
print ('My name is {name}.%s'.format(name='Ben')%(FOOD if food else ""))
# >>> My name is Ben.I like to eat Pizza


food = ""
FOOD = "I like to eat {food}".format(food = food)
print ('My name is {name}.%s'.format(name='Ben')%(FOOD if food else ""))
# >>> My name is Ben.

关于python - 在 Python 中使用可能不存在的参数格式化字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40656818/

相关文章:

python - 计算两个多维数组之间的相关系数

python - 如何使用 boto 从作业中提取 FreeText 答案

ios - 在状态栏下方获取自动布局

iphone - Objective - C 菜鸟 NSString 问题

java - 如何拥有一个由数组 : Java? 索引的数组

fonts - 为什么任何轮廓字体格式都不使用四阶或更高阶的贝塞尔曲线?

excel - MS Excel 中数字格式的 SI 前缀

python - 如何将向量分配给带有 NaN 的 pandas DataFrame 中列的行子集?

python - 为什么空 python 正则表达式搜索的返回值匹配?

c - 如何在 C 中从 void * 分配字符串值?