I have this api call.

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

I want to use a f string to change those values but I get a syntax error saying I can't use backslash for f strings. What can I do?

3

2 Answers

This is currently a limitation of f-strings in python. Backslashes aren't allowed in them at all (see )

Option 1

The best way would be to instead use use str.format() to accomplish this, per

Option 2

If you're super keen on using backslashes, you could do something like this:

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

But that's probably not the best way to make your code readable to other people.

Option 3

If you're absolutely certain you'll never use a particular character, you could also put in that character as a placeholder, something like

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

But that's also super workaround-y. And it's a great way to introduce bugs down the road, if you ever get an input with that char in it.

Option 4

As mentioned in the comments to this answer, another option would be to do chr(92) inside some curlies, as below:

my_string = f"This is a backslash: {chr(92)}" 
5
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) 

Result:

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" }

Result via 'jq':   (check here for info on '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" }
0

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy