
On Fri, 30 Apr 2021 at 17:08, David Álvarez Lombardi <alvarezdqal@gmail.com> wrote:
I propose a syntax for constructing/filtering strings analogous to the one available for all other builtin iterables. It could look something like this.
dirty = "f8sjGe7" clean = c"char for char in dirty if char in string.ascii_letters" clean 'fsjGe'
Currently, the best way to do this (in the general case) seems to be the following.
clean = "".join(char for char in dirty if char in string.ascii_letters)
But I think the proposed syntax would be superior for two main reasons.
I’m not against a specialised string generator construct per-se (I’m not for it either :) as it’s not a problem I have experienced, and I’ve been doing a lot of string parsing/formatting at scale recently) but that doesn’t mean your use-cases are invalid. To me, the chosen syntax is problematic. The idea of introducing structural logic by using “” seems likely to cause confusion. Across all languages I use, quotes are generally and almost always used to introduce constant values. Sometimes, maybe, there are macro related things that may use quoting, but as a developer, if I see quotes, I’m thinking: the runtime will treat this as a constant. Having a special case where the quotes are a glorified function call just feels very wrong to me. And likely to be confusing. Steve
- Consistency with the comprehension style for all other iterables (which seems to be one of the most beloved features of python) - Confusion surrounding the str.join(iter) syntax is very well documented <https://stackoverflow.com/questions/493819/why-is-it-string-joinlist-instead...> and I believe it is particularly unintuitive when the string is empty
I also believe the following reasons carry some weight.
- Skips unnecessary type switching from str to iter and back to str - Much much MUCH more readable/intuitive
Please let me know what you all think. It was mentioned (by @rhettinger) in the PBT issue <https://bugs.python.org/issue43900> that this will likely require a PEP which I would happily write if there is a positive response.
--
*David Álvarez Lombardi* Machine Learning Spanish Linguist Amazon | Natural Language Understanding Boston, Massachusetts alvarezdqal <https://www.linkedin.com/in/alvarezdqal/> _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-leave@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/MVQGP4... Code of Conduct: http://python.org/psf/codeofconduct/