Python f-string未终止字面量语法错误求助
Python f-string未终止字面量语法错误求助
嗨,我来帮你排查这个问题~
你遇到的SyntaxError: unterminated f-string literal错误,根本原因不是*符号导致的,而是你的f-string在多行书写时没有正确处理换行,Python解释器误以为字符串还没写完,所以抛出了未终止字面量的错误。
你之前删掉*后错误跳到其他行,只是因为字符串结构变化后,解释器检测到错误的位置变了,但核心问题始终是多行f-string的写法不符合规范。
这里给你几种修正方案:
方案1:使用三重引号定义多行f-string
这是最直观的方式,三重引号允许字符串直接换行,不需要额外处理:
message = ( f'''Lembrete de que existe uma reserva para amanhã de *{dayAfter}* {dayAfterCellphone} para a carrinha que estás a usar.''' )
也可以用双引号的三重引号""",效果是一样的。
方案2:在换行末尾添加反斜杠
用反斜杠告诉Python这行代码还未结束,会把下一行的内容合并到当前字符串中:
message = ( f'Lembrete de que existe uma reserva para amanhã de *{dayAfter}* \ {dayAfterCellphone} para a carrinha que estás a usar.' )
⚠️ 注意:这种方式可能会引入缩进带来的多余空格,如果不需要空格的话,要调整换行的位置。
方案3:拆分f-string为多个部分拼接
把长字符串拆成多个f-string片段,Python会自动将相邻的字符串字面量拼接起来:
message = ( f'Lembrete de que existe uma reserva para amanhã de *{dayAfter}* ' f'{dayAfterCellphone} para a carrinha que estás a usar.' )
这种方式不会有多余空格的问题,也很清晰。
备注:内容来源于stack exchange,提问作者Duarte Almeida




