On Mon, Mar 16, 2020 at 9:08 AM Rob Cliffe via Python-ideas
<python-ideas@python.org> wrote:
>
>
> On 22/02/2020 06:26, Steven D'Aprano wrote:
> >
> > Actually, in Python, regexes are the primary reason raw strings were
> > added!
> >
> > Raw strings aren't quite fully raw, which is why you can't use raw
> > strings for Windows paths:
> >
> >      path = r'somewhere\some\folder\'
> >
> > doesn't work. The reason is that "raw" (semi-cooked?) strings are
> s/are/were/
> >
> > intended for regexes, not as a general mechanism for disabling string
> > escape codes, and regexes aren't allow to end with a bare backslash.
> >
> >
> > https://docs.python.org/3/faq/design.html#why-can-t-raw-strings-r-strings-end-with-a-backslash
>
> So maybe it's time to make raw strings really raw?  They do have uses
> other than regexes, as your path example shows.
>
> I've been bitten by this gotcha a few times.
>
> Your docs link states "... they allow you to pass on the string quote
> character by escaping it with a backslash."
>

Currently, string prefixes don't determine when the string ends.
Neither raw strings nor f-strings can end the string anywhere other
than the place a vanilla string literal would:

>>> f"asdf{'qwer"zxcv'}1234"
  File "<stdin>", line 1
    f"asdf{'qwer"zxcv'}1234"
                 ^
SyntaxError: invalid syntax
>>> f"""asdf{'qwer"zxcv'}1234"""
'asdfqwer"zxcv1234'

I don't know how deeply baked into the language this requirement is,
but it's certainly something that makes things easier for all forms of
syntax highlighting etc.

ChrisA
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/BGIYPPLSNSPM52WRDITDA56GPEEMX4VJ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to