truncating strings

Chris Rebert clp2 at rebertia.com
Tue Aug 23 13:27:42 EDT 2011


On Tue, Aug 23, 2011 at 9:29 AM, Roy Smith <roy at panix.com> wrote:
> I want to log a string but only the first bunch of it, and add "..."
> to the end if it got truncated.  This certainly works:
>
>          log_message = message
>          if len(log_message) >= 50:
>            log_message = log_message[:50] + '...'
>          logger.error("FAILED: '%s', '%s', %s, %s" % (log_message,
> route, params, e.code))
>
> but it bugs me that there should be some cleaner way to do this.  I'm
> fantasizing about something along the lines of:
>
>          logger.error("FAILED: '%s{50}', '%s', %s, %s" % (message,
> route, params, e.code))
>
> does anything like this exist?

You can specify a maximum width to truncate the string to, but I don't
see any built-in way to add an elision indication (e.g. "...").

>>> "%.4s" % "spam and eggs"
'spam'
>>> "{:.4s}".format("spam and eggs")
'spam'

You could define something to wrap strings and override __format__()
or similar, but that seems like overkill.

Cheers,
Chris
--
http://rebertia.com



More information about the Python-list mailing list