我搜索过这个,但我不确定如何表达我要问的内容,所以很难找到是否有人已经发布了解决方案。
我想将一些变量格式化为描述性字符串。例如:
'My name is {name}. I like to eat {food}.'.format(name='Ben', food='pizza')
给出(显然):'我的名字是本。我喜欢吃披萨。”
但如果 food
是 None
或 ''
(空),我想省略整个第二句。所以:
'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/