On 8/12/2019 10:21 PM, Serhiy Storchaka wrote:
12.08.19 22:41, Glenn Linderman пише:
On 8/12/2019 12:08 AM, Serhiy Storchaka wrote:
Currently a raw literal cannot end in a single backslash (e.g. in r"C:\User\"). Although there are reasons for this. It is an old gotcha, and there are many closed issues about it. This question is even included in FAQ.

Hmm. I didn't find it documentation, and searching several ways for it in a FAQ, I wasn't able to find it either.

https://docs.python.org/3/faq/design.html#why-can-t-raw-strings-r-strings-end-with-a-backslash

Thanks. After my Google searches failed, I looked at the Python FAQ TOC, and the sections that seemed most promising seemed to be "General" and "Programming" and "Python on Windows".  I never thought to look under "Design and History".  "Programming" actually had a section on strings, and it wasn't there... which reduced my enthusiasm for reading the whole thing, and since it is in 8 sections, it was cumbersome to do a global search in the browser.

It looks like the FAQ is part of the standard documentation, but it seems like it would be more useful if there were cross-links between the documentation and the related FAQs.


Thanks for your investigation, Serhiy.  Point 3 seems like the easiest way to convert most regular expressions containing  \" or \'  from  r"..." form to v"""...""", without disturbing the internal gibberish in the regular expression, and without needing significant analysis.

No new prefix is needed, since a single trailing backslash is never a problem in regular expression (as it is an illegal RE syntax).

I'd be interested in your comments on my future import idea either here or privately. After 30 years of Python, it seems that there are quite a few warts in the string syntax, and a fresh start might be appropriate, as well as simpler to document, learn, and teach, and future import would allow a gradual, opt-in migration. It may be a long time, if ever, before the current syntax warts could be removed and the future import eliminated, but from the sounds of things, it might also be a long time, if ever, before there can be agreement on adding new escapes or giving errors for bad ones in the present syntax: making any changes without introducing a new prefix is a breaking, incompatible change.



Regarding point 4, if it is a string literal used as a regexp, internal triple quotes can be recoded as   "{3}  and  '{3} .

Good point! This is yet one option.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-leave@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/VR34LGEWNJVNKIFNXW7R3CCHFH6USYTT/