SyntaxError: f-string表达式部分不能包含反斜杠。
SyntaxError: f-string表达式部分不能包含反斜杠。
这个问题已经有答案了:
我有这个API调用。
payload = "{\\"weight\\":{\\"value\\":\\"85.00\\",\\"unit\":\\"kg\\"},\\"height\\":{\\"value\\":\\"170.00\\",\\"unit\\":\\"cm\\"},\\"sex\\":\\"m\\",\\"age\\":\\"24\\",\\"waist\\":\\"34.00\\",\\"hip\\":\\"40.00\\"}"
我想使用f字符串来更改这些值,但我收到一个语法错误,说我不能在f字符串中使用反斜杠。我该怎么办?
admin 更改状态以发布 2023年5月20日
class data(object): _weight = 85.00 _height = 170.00 _sex = 'm' _age = '24' _waist = 34.0 _hip = 40.0 payload = f'\ {{\ "weight": {{\ "value": "{data._weight}",\ "unit": "kg"\ }},\ "height": {{\ "value": "{data._height}",\ "unit": "cm"\ }},\ "sex": "{data._sex}",\ "age": "{data._age}",\ "waist": "{data._waist}",\ "hip": "{data._hip}"\ }}' print(payload)
结果:
C:\>python.exe test.py { "weight": { "value": "85.00", "unit": "kg" }, "height": { "value": "170.00", "unit": "cm" }, "sex": "m", "age": "24", "waist": "34.0", "hip": "40.0" }
通过'jq'获取结果: (有关'jq'信息,请单击此处)
C:\>python.exe test.py | jq . { "weight": { "value": "85.00", "unit": "kg" }, "height": { "value": "170.00", "unit": "cm" }, "sex": "m", "age": "24", "waist": "34.0", "hip": "40.0" }
这是Python中f-string的一个限制。它们根本不允许使用反斜杠(请参见https://mail.python.org/pipermail/python-dev/2016-August/145979.html)
选项1
最好的方法是改用str.format()
,以实现此目的,参见https://docs.python.org/3/library/stdtypes.html#str.format
选项2
如果你非常想使用反斜杠,你可以这样做:
backslash_char = "\\" my_string = f"{backslash_char}foo{bar}"
但这可能不是向其他人呈现你的代码最佳的方式。
选项3
如果你绝对确定不会使用某个特定字符,你也可以将该字符作为占位符放入其中,如下所示:
my_string = f"foo{bar}".replace("", "\\")
但这也是一个临时的解决办法。如果你的输入中包含该字符,这是引入错误的好方法。
选项4
如此答案中的评论所提到的,另一个选择是在一些大括号中使用chr(92)
,如下所示:
my_string = f"This is a backslash: {chr(92)}"