我遇到这种情况:
msg = 'stackoverflow is {subject}'+ ' for me'.format(subject='useful')
msg = 'stackoverflow is {subject}'.format(subject='useful') + ' for me'
首先打印:
对我来说,stackoverflow是{subject}
第二个打印:
stackoverflow对我很有用
不连接两个字符串会产生一个新字符串,应该将其视为字符串格式输入的普通字符串吗?
答案 0 :(得分:6)
是的,但您需要在第一个解决方案中使用括号:
msg = ('stackoverflow is {subject}' + ' for me').format(subject='useful')
否则,.format
调用仅适用于' for me'
字符串,这实际上是无操作:
>>> ' for me'.format(subject='useful')
' for me'
>>>
但是,使用括号,首先会合并'stackoverflow is {subject}'
和' for me'
字符串文字:
>>> ('stackoverflow is {subject}' + ' for me')
'stackoverflow is {subject} for me'
>>>
然后将在结果字符串上调用.format
。
另外,只是为了记录,在这种情况下你不需要使用+
,因为相邻的字符串文字在Python中自动连接:
>>> 'a''b'
'ab'
>>> 'a' 'b'
'ab'
>>>
答案 1 :(得分:0)
在上面的示例中,您在最后一个字符串.format()
上调用for me
,因此格式化不会像您预期的那样工作。
将字符串concat包装在括号中,并在结果字符串上调用format,格式化将起作用。