On Fri, Apr 23, 2021 at 7:26 PM Stephen J. Turnbull
<[email protected]> wrote:
>
> Cameron Simpson writes:
>
>  > I would _frequently_ like to be able to provide custom
>  > conversions. At present I'm using elaborate hacks based on
>  > __getattr__ etc to recognise things like this:
>  >
>  >     '{x} is {x_lc} in lowercase'
>  >
>  > where the _lc suffix is caught and a value computed from "x".
>  >
>  > Custom conversions would let me use this:
>  >
>  >     '{x} is {x!lc} in lowercase'
>
> I don't understand how this is supposed to work.  It looks to me like
> !code is a preprocessor:
>
>     >>> print(f'{1!a:g}')
>     Traceback (most recent call last):
>       File "<stdin>", line 1, in <module>
>     ValueError: Unknown format code 'g' for object of type 'str'
>
> If so,
>
>     '{x} is {x!lc:foo} in lowercase'
>
> will fail because str doesn't implement the 'foo' format code.  Do we
> really need to extend format() rather than using
>
>     def lc(x): return str(x).lower()
>
>     '{x} is {lc(x)} in lowercase'
>

That works in an f-string but not in str.format(), so it's not
i18n-compatible. I'm sympathetic to the plea for conversions, but I'm
not sure that this is the best way to do it.

What WOULD work, though, is actual attributes. I'm not sure why x_lc
is a thing, but it would certainly work as x.lc - though not as
x.lower(), since method calls aren't supported. So the built-in str
type still won't work here.

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

Reply via email to