1 回答

TA貢獻1790條經驗 獲得超9個贊
正如評論中所指出的,Real Python 網站上提供了一個很好的字符串格式化方法比較。
在許多情況下,與其他變體相比,f 字符串更具可讀性并且更不易出現人為錯誤,但需要 Python >= 3.6,因此如果需要向后兼容,則可能必須避免使用??偟膩碚f,它們是一個不錯的選擇,但不時會出現一些問題。
嵌套 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 表達式部分中包含換行符的字符串文字時,我個人傾向于遇到此限制。
添加回答
舉報