Search code examples
pythonquotesfunction-callquotingf-string

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

  • Your problem is double quotes inside double quotes. For example,

    • OK --> f"hello ' this is good"
    • OK --> f'hello " this is good'
    • ERROR --> f"hello " this breaks"
    • ERROR --> f'hello ' this breaks'

    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.