我有这个 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 字符串。
这目前是 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
如果你非常热衷于使用反斜杠,你可以做这样的事情:
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)}"
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" }
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(46条)