1 回答
TA贡献1790条经验 获得超9个赞
正如评论中所指出的,Real Python 网站上提供了一个很好的字符串格式化方法比较。
在许多情况下,与其他变体相比,f 字符串更具可读性并且更不易出现人为错误,但需要 Python >= 3.6,因此如果需要向后兼容,则可能必须避免使用。总的来说,它们是一个不错的选择,但不时会出现一些问题。
嵌套 f 字符串时,必须小心使用引号。这失败了:
>>> f"Hello {"there"}"
File "<stdin>", line 1
f"Hello {"there"}"
^
SyntaxError: invalid syntax
但是在内部使用其他引号可以解决这个问题:
>>> f"Hello {'there'}"
'Hello there'
但是,您不能将包含字符串文字的 f 字符串嵌套得比这更深,因为您没有更多不同的引号可供使用。
我经常偶然发现的另一个问题是在 f-string 表达式部分中不允许使用反斜杠的限制,即使它们在字符串文字中:
>>> f"Path: {'C:\Windows'}"
File "<stdin>", line 1
SyntaxError: f-string expression part cannot include a backslash
您可以使用中间变量来解决这个问题,或者format():
>>> path = 'C:\Windows'
>>> f"Path: {path}"
'Path: C:\\Windows'
>>> "Path: {0}".format('C:\Windows')
'Path: C:\\Windows'
这可能是您使用 f 字符串格式化路径时遇到的问题。'\n'在使用 f-string 表达式部分中包含换行符的字符串文字时,我个人倾向于遇到此限制。
添加回答
举报