结合 f 字符串和原始字符串文字

Combine f-string and raw string literal

我想知道如何在使用 r 的同时使用 f 字符串来获取原始字符串文字。我目前有它如下但想要允许任何名称替换 Alex 的选项我正在考虑添加一个 f-string 然后用花括号替换 Alex 并将用户名放在里面但是这不会使用 r.

username = input('Enter name')
download_folder = r'C:\Users\Alex\Downloads'

或者,您可以使用 str.format() 方法。

name = input("What is your name? ")
print(r"C:\Users\{name}\Downloads".format(name=name))

这将通过插入 name 值来格式化原始字符串。

您可以将 f 字符串的 f 与原始字符串的 r 结合起来:

user = 'Alex'
dirToSee = fr'C:\Users\{user}\Downloads'
print (dirToSee) # prints C:\Users\Alex\Downloads

r 仅禁用反斜杠转义序列处理,而不是 f 字符串处理。

引用docs

The 'f' may be combined with 'r', but not with 'b' or 'u', therefore raw formatted strings are possible, but formatted bytes literals are not.

...

Unless an 'r' or 'R' prefix is present, escape sequences in string and bytes literals are interpreted...

原始 f 字符串在处理动态正则表达式时非常有用。 https://www.python.org/dev/peps/pep-0498/#raw-f-strings 包含很多有用的信息。

由于您使用的是文件路径,因此我会避免使用 f 字符串,而是使用适合路径操作的库。例如 pathlib 将允许你做:

from pathlib import Path
username = input('Enter name')
download_folder = Path('C:/Users', username, 'Downloads')

此方法还提供了一些其他常见的文件操作,例如is_dir open

或者您也可以使用 os.path.join)