On Tue, Sep 21, 2021 at 4:08 PM Steve Dower <[email protected]> wrote:
> On 9/21/2021 7:42 PM, Eric V. Smith wrote:
> > I don't recall exactly why, but I disallowed backslashes inside
> > expressions at the last minute before 3.6 was released. It might have
> > been because I was interpreting them in a way that didn't make sense if
> > a "real" parser were inspecting f-strings. The idea, even back then, was
> > to re-allow them when/if we moved f-string parsing into the parser
> > itself. I think it's time.
>
> Yeah, we were still trying to figure out whether escapes like "\\n"
> would be evaluated as "\\n" or "\n" in the expression, and decided to
> decide later. If we can clearly articulate which it is now, then let's
> go ahead and enable it.
>
That would seem easy enough, right?
f"spam {'xyz'.replace('y', '\\n')} spam"
should be equal to
"spam x\\ny spam"
and print as
spam x\ny spam
(i.e. a literal backslash followed by 'n', not a newline).
You shouldn't have to double the \ in the interpolated expression just
because it's in an f-string.
I presume it was trickier at the time because we were coming from
"{xxx}".format(...), where the parser doesn't know that the string is a
format string.
--
--Guido van Rossum (python.org/~guido)
*Pronouns: he/him **(why is my pronoun here?)*
<http://feministing.com/2015/02/03/how-using-they-as-a-singular-pronoun-can-change-the-world/>
_______________________________________________
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/OBHZ3YA5JS74RDTHSRD7CTWANGJXUARW/
Code of Conduct: http://python.org/psf/codeofconduct/