Python 中已包含大括号的字符串插值

Pio*_*ski 1 python

我正在用 Python 准备一个 GraphQL 查询字符串,我需要在字符串中插入三个变量,只有一个问题。GraphQL 包含大量大括号,它会干扰 Python f 字符串的工作方式。

number = 10
owner = "me"
name = "my_repo"
query = f"""
query {
    repository(owner:"{owner}", name:"{repo}") {
      pullRequests(first: {number}) {
        edges {
          node {
            state
            merged
            createdAt
          }
        }
      }
    }
  }
"""
Run Code Online (Sandbox Code Playgroud)

上面的代码引发语法错误。所以我认为我需要完全放弃使用 f 字符串? 当 f 字符串包含与插值无关的大括号时,有没有办法在 Python 中仍然使用 f 字符串?

小智 5

您可以将所有替换{{{并类似地替换所有}}},然后运行您的 f 字符串。

要转义大括号,只需在 Python 中添加另一个大括号即可。例如:

x=3
print(f'x={{{x}}}')
Run Code Online (Sandbox Code Playgroud)

那会打印x={3}.