Python单引号包裹f-string内含撇号触发语法错误如何解决
错误原因
- 字符串引号冲突:你写的f-string外层使用单引号
'包裹,但是字符串内容中存在don't的单引号,Python解析时会把这个内部单引号判定为字符串的结束标识,后续的字符不符合Python语法规则,因此触发语法报错。 - 未符合需求要求:原代码没有按要求先将拼接完成的内容存入
message变量,直接执行了打印操作。
解决方案
核心是规避字符串内外引号冲突,同时补充message变量的赋值逻辑,有3种常用实现方式:
- 方案1:转义内部冲突的单引号
glorious = "Allah" # 对内部单引号加反斜杠转义 message = f'{glorious} said,"Don\'t lose hope,nor be sad."' print(message)
- 方案2:外层使用双引号包裹f-string
glorious = "Allah" # 外层用双引号,和内部的单引号不冲突,只需要转义内部的双引号即可 message = f"{glorious} said,\"Don't lose hope,nor be sad.\"" print(message)
- 方案3:使用三引号包裹f-string,无需额外转义
glorious = "Allah" message = f'''{glorious} said,"Don't lose hope,nor be sad."''' print(message)
以上三种方案运行后均可输出正确结果:Allah said,"Don't lose hope,nor be sad."
内容的提问来源于stack exchange,提问作者Tahsin Subah
相关产品推荐
相关产品推荐

