串联字符串上的字符串格式?

时间:2014-12-23 21:55:20

标签: python string string-formatting

我遇到这种情况:

msg = 'stackoverflow is {subject}'+ ' for me'.format(subject='useful')

msg = 'stackoverflow is {subject}'.format(subject='useful') + ' for me'

首先打印:

  对我来说,

stackoverflow是{subject}

第二个打印:

  

stackoverflow对我很有用

不连接两个字符串会产生一个新字符串,应该将其视为字符串格式输入的普通字符串吗?

2 个答案:

答案 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,格式化将起作用。