如何修复f-string中的未终止表达式; python中缺少右括号?

5f0d552i  于 2023-11-16  发布在  Python
关注(0)|答案(3)|浏览(144)

我想使用f字符串格式而不是打印。但是,我得到了这些错误:f字符串中的表达式未终止;缺少右括号Expected ')'

var="ab-c"
f"{var.replace("-","")}text123"

字符串
我尝试使用单引号f“和双括号,但它们都不起作用。如何解决这个问题?

5us2dqdw

5us2dqdw1#

Python 3.12之前:

对于f"{var.replace("-","")}text123",Python将f"{var.replace("解析为一个完整的字符串,你可以看到它有一个开头的{和一个开头的(,但随后字符串被终止。它首先期望一个),最终期望一个},因此你看到的错误。
为了解决这个问题,Python允许'"封装一个字符串,所以一个用于f字符串,另一个用于字符串内部:

f"{var.replace('-','')}text123"

字符串
或:

f'{var.replace("-","")}text123'


如果内部同时有'",也可以使用三重引号

f'''{var.replace("-",'')}text123'''


或:

f"""{var.replace("-",'')}text123"""

从Python 3.12开始:

一些f字符串限制已经被取消,OP的原始代码现在可以工作了:

Python 3.12.0 (tags/v3.12.0:0fb18b0, Oct  2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> var="ab-c"
>>> f"{var.replace("-","")}text123"
'abctext123'


参见Python 3.12中的新增功能,PEP 701:f字符串的语法形式化。

7gcisfzg

7gcisfzg2#

使用单引号:

var="ab-c"
f'{var.replace("-","")}text123'

# display abctext123

字符串

cxfofazt

cxfofazt3#

var = "ab-c"
f"{var.replace('-','')}text123"

字符串
始终使用不同于f字符串中的引号字符

相关问题