SyntaxError:f-string表达式部分不能包含反斜杠

我有这个 API 调用。

我有这个 API 调用。

payload = "{\\"weight\\":{\\"value\\":\\"85.00\\",\\"unit\":\\"kg\\"},\\"height\\":{\\"value\\":\\"170.00\\",\\"unit\\":\\"cm\\"},\\"\\":\\"m\\",\\"age\\":\\"24\\",\\"waist\\":\\"34.00\\",\\"hip\\":\\"40.00\\"}"

我想用一个 f 字符串来改变这些值,但我得到一个语法错误说我不能使用反斜杠 f 字符串。

64

这目前是 python 中 f 字符串的限制。他们根本不允许使用反斜杠(请参阅https://mail.python.org/pipermail/python-dev/2016-August/145979.html

Option1

最好的方法是使用使用str.format()来完成这个,每https://docs.python.org/3/library/stdtypes.html#str.format

Option2

如果你非常热衷于使用反斜杠,你可以做这样的事情:

backslash_char = "\\"
my_string = f"{backslash_char}foo{bar}"

但这可能不是使您的代码可读其他人的最佳方式。

Option3

如果你绝对确定你永远不会使用一个特定的字符,你也可以把这个字符作为占位符,比如

my_string = f"?foo{bar}".replace("?", "\\")

但这也是超级解决方法-y。这是一个很好的方法来引入 bug,如果你曾经得到一个输入与 char。

Option 4

正如这个答案的评论中提到的,另一种选择是在一些卷曲中做chr(92),如下所示:

my_string = f"This is a backslash: {chr(92)}"
1
class data(object):
    _weight = 85.00
    _height = 170.00
    _ = 'm'
    _age = '24'
    _waist = 34.0
    _hip = 40.0
payload = f'\
{{\
    "weight": {{\
        "value": "{data._weight}",\
        "unit": "kg"\
    }},\
    "height": {{\
        "value": "{data._height}",\
        "unit": "cm"\
    }},\
    "": "{data._}",\
    "age": "{data._age}",\
    "waist": "{data._waist}",\
    "hip": "{data._hip}"\
}}'
print(payload)
Result:
C:\>python.exe test.py
{ "weight": { "value": "85.00", "unit": "kg" }, "height": { "value": "170.00", "unit": "cm" }, "": "m", "age": "24", "waist": "34.0", "hip": "40.0" }

通过“jq”的结果:(检查here以获取有关“jq”的信息)

C:\>python.exe test.py | jq .
{
  "weight": {
    "value": "85.00",
    "unit": "kg"
  },
  "height": {
    "value": "170.00",
    "unit": "cm"
  },
  "": "m",
  "age": "24",
  "waist": "34.0",
  "hip": "40.0"
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(389)
在models.py中 我将IntegerField设置为空白 =True 但实际上 此字段也必须不为空
上一篇
scipy.integrate.trapz和不连续函数
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(46条)