Lprint = ( Lisp-style printing ( of lists and strings (etc.) ) in Python )

Peter J. Holzer hjp-python at hjp.at
Sat Jun 1 04:24:14 EDT 2024


On 2024-05-30 21:47:14 -0700, HenHanna via Python-list wrote:
> [('the', 36225), ('and', 17551), ('of', 16759), ('i', 16696), ('a', 15816),
> ('to', 15722), ('that', 11252), ('in', 10743), ('it', 10687)]
> 
> ((the 36225) (and 17551) (of 16759) (i 16696) (a 15816) (to 15722) (that
> 11252) (in 10743) (it 10687))
> 
> 
> i think the latter is easier-to-read, so i use this code
>                                                        (by Peter Norvig)

This doesn't work well if your strings contain spaces:

Lprint(
    [
        ["Just", "three", "words"],
        ["Just", "three words"],
        ["Just three", "words"],
        ["Just three words"],
    ]
)

prints:

((Just three words) (Just three words) (Just three words) (Just three words))

Output is often a compromise between readability and precision.


> def lispstr(exp):
>            # "Convert a Python object back into a Lisp-readable string."
>     if isinstance(exp, list):

This won't work for your example, since you have a list of tuples, not a
list of lists and a tuple is not an instance of a list.

>         return '(' + ' '.join(map(lispstr, exp)) + ')'
>     else:
>         return str(exp)
> 
> def Lprint(x): print(lispstr(x))

I like to use pprint, but it's lacking support for user-defined types. I
should be able to add a method (maybe __pprint__?) to my classes which
handle proper formatting (with line breaks and indentation).

        hp
-- 
   _  | Peter J. Holzer    | Story must make more sense than reality.
|_|_) |                    |
| |   | hjp at hjp.at         |    -- Charles Stross, "Creative writing
__/   | http://www.hjp.at/ |       challenge!"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://mail.python.org/pipermail/python-list/attachments/20240601/b599867a/attachment.sig>


More information about the Python-list mailing list