On Sat, May 26, 2018 at 7:10 PM, Steven D'Aprano <steve+comp.lang.pyt...@pearwood.info> wrote: > On Sat, 26 May 2018 18:22:15 +0300, Mikhail V wrote: > >>> Here is a string assigned to name `s` using Python's current syntax: >>> >>> s = "some\ncharacters\0abc\x01\ndef\uFF0A\nhere" >>> >>> How do you represent that assignment using your syntax? >> >> Hope its not mandatory to decipher your random example. If for example >> I'd want to work with a lot of non-presentable characters, I'd use a >> more human-oriented notation than this ^. And that is exactly where raw >> strings are needed. >> >> So I'd make a readable notation where I can present a character by its >> ordinal enclosed in some tag for example {10}. Then just write a >> function which collapses those depending on further needs: >> >> data >>| abc{10}def >> data = f(data) >> >> And the notation itself can be chosen depending on my needs. Hope you >> get the point. > > Loud and clear: your syntax has no way of representing the string s.
Just 5 lines before it is - you did not notice. > temp = >>| Mikhail's syntax for {65290} is {65290} > Can you see the problem yet? How does your collapse function f() > distinguish between the escape code {65290} and the literal string > {65290}? Look, there is no any problem here. You can choose whatever YOU want to write "{" and "}". e.g. I'd pick {<} {>}. temp = >>| Mikhail's syntax for {65290} is {<}65290{>} I just show you that syntax allows you not only input TEXT without any manipulations, but also it allows to solve any task related to custom presentation - in this case you want work with ordinals for example. And you may end up with a scheme which reads way better than your cryptic example. This motivation is covered in documentation, but maybe not good enough? anyway you're welcome to make suggestion for the documentation. I'll also ask you a question - Which such non-text codes you may need to generate C code? Python code? HTML code? > > And we've gone from a single string literal, which is an expression that > can be used anywhere, to a statement that cannot be used in expressions. Ok show me your suggestion for a raw string definition for expressions (no modifications to source text and no usage of invisible control chars). > I don't know what TQS is supposed to mean. Triple Quoted String > s = >>> > this is some text > x = 'a' > y = 'b' > t = 'c' > > > Am I close? Yes very close, just shift it with a char of your choice, e.g. 1 space: s >>> !" " this is some text x = 'a' y = 'b' t = 'c' or use a tag of your choice (no shifting needed in this case): s >>> ?"#your favorite closing tag" this is some text x = 'a' y = 'b' #your favorite closing tag t = 'c' There can be other suggestions for symbols, etc. -- https://mail.python.org/mailman/listinfo/python-list