Python format函数在字符串拼接场景下无法正常生效问题咨询
Python format函数拼接字符串失效问题解决方案
问题根本原因
第二个print语句异常是因为Python运算符优先级导致的:属性/方法调用(.运算符)的优先级高于字符串拼接(+运算符)。
你写的代码:
print('${:.2f}is the sale price of' + ' ' + var1 + '.'. format(finalprice))
实际执行顺序是先执行最后那段字符串'.'的format调用,再依次执行字符串拼接,前面包含{:.2f}占位符的字符串根本没有调用format方法,所以占位符没有被替换,输出就会显示异常。
解决思路
- 方案1:直接在单个格式化字符串中包含所有变量,不需要手动拼接
代码示例:
把var1作为第二个参数传入format,匹配第二个占位符即可,代码更简洁易读。print('${:.2f} is the sale price of {}.'.format(finalprice, var1)) - 方案2:如果一定要用字符串拼接的写法,给整个待格式化的字符串加括号,保证拼接完成后再调用format
代码示例:
括号会改变执行顺序,先完成所有拼接操作得到完整的带占位符的字符串,再调用format方法替换占位符。print(('${:.2f}is the sale price of' + ' ' + var1 + '.').format(finalprice)) - 方案3(更推荐,Python3.6及以上版本支持):使用f-string语法,可读性更高
代码示例:print(f'${finalprice:.2f} is the sale price of {var1}.')
内容的提问来源于stack exchange,提问作者Sophia Tze
相关产品推荐
相关产品推荐

