例如我有这样一行代码
if checked:
checked_string = "check"
else:
checked_string = "uncheck"
print "You can {} that step!".format(checked_string)
有捷径吗?我只是好奇而已。
print "You can {} that step!".format('check' if checked else 'uncheck')
checkmap = {True: 'check', False: 'uncheck'}
print "You can {} that step!".format(checkmap[bool(checked)]))
这可以通过 python 3.6+ 使用 f-strings 来处理
print(f"You can {'check' if checked else 'uncheck'} that step!")
我知道,我已经很晚了。但是人们会搜索。
我在一种情况下使用它,格式字符串必须尽可能简单,因为它们是用户提供的配置的一部分,即由对Python一无所知的人编写。
在这种基本形式中,使用仅限于一个条件。
class FormatMap:
def __init__(self, value):
self._value = bool(value)
def __getitem__(self, key):
skey = str(key)
if '/' not in skey:
raise KeyError(key)
return skey.split('/', 1)[self._value]
def format2(fmt, value):
return fmt.format_map(FormatMap(value))
STR1="A valve is {open/closed}."
STR2="Light is {off/on}."
STR3="A motor {is not/is} running."
print(format2(STR1, True))
print(format2(STR2, True))
print(format2(STR3, True))
print(format2(STR3, False))
# A valve is closed.
# Light is on.
# A motor is running.
# A motor is not running.