'f-string: unmatched '(' in line with function call

I'm trying to use f-strings in python to substitute some variables into a string that I'm printing, and I'm getting a syntax error. Here's my code:

print(f"{index+1}. {value[-1].replace("[Gmail]/", '')}")

I only started having the problem after I added the replace. I've checked plenty of times and I'm certain that I'm not missing a parenthesis. I know that there are plenty of other ways to accomplish this, some of which are probably better, but I'm curious why this doesn't work.



Solution 1:[1]

Your problem is double quotes inside double quotes. This one should work correctly:

print(f"{index+1}. {value[-1].replace('[Gmail]/', '')}")

Out of scope but still I do not advise you to use replace inside f-string. I think that it would be better to move it to a temp variable.

Solution 2:[2]

Seems like this does not work

x = 'hellothere'
print(f"replace {x.replace("hello",'')}")

error

    print(f"replace {x.replace("hello",'')}")
                                ^
SyntaxError: f-string: unmatched '('

Try this instead

x = 'hellothere'
print(f"replace {x.replace('hello','')}")

single quotes 'hello' output is

replace there

Solution 3:[3]

Another way to do some string formatting (which in my opinion improves readability) :

print("{0}. {1}".format(index+1, 
                        value[-1].replace("[Gmail]/", "")))

Solution 4:[4]

I had the same issue,change all the double quote within the parenthesis to single quotes.It should work eg from print( f" Water : {resources["water"] } " ) to
print( f" Water : {resources['water'] } " )

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Oleksandr Dashkov
Solution 2 BuddyBob
Solution 3 Charles Dupont
Solution 4 user17597998