Awkward format string
Bruno Desthuilliers
bruno.42.desthuilliers at wtf.websiteburo.oops.com
Thu Aug 2 04:32:41 EDT 2007
beginner a écrit :
> Hi,
>
> In order to print out the contents of a list, sometimes I have to use
> very awkward constructions. For example, I have to convert the
> datetime.datetime type to string first, construct a new list,
s/list/tuple/
> and then
> send it to print. The following is an example.
>
> x=(e[0].strftime("%Y-%m-%d"), e[1].strftime("%Y-%m-%d"))+e[2:]
> print >>f, "%s\t%s\t%d\t%f\t%f\t%f\t%d" % x
>
> e is a tuple. x is my new tuple.
>
> Does anyone know better ways of handling this?
>>> from datetime import datetime
>>> dt = datetime(2007,8,2)
>>> dt
datetime.datetime(2007, 8, 2, 0, 0)
>>> str(dt)
'2007-08-02 00:00:00'
>>> "%s" % dt
'2007-08-02 00:00:00'
>>> dt.date()
datetime.date(2007, 8, 2)
>>> str(dt.date())
'2007-08-02'
Do you really need datetime objects ? If not, using date objects instead
would JustWork(tm) - at least until someone ask you to use another date
format !-)
Else, and since you seem to have a taste for functional programming:
from datetime import datetime
from functools import partial
def iformat(e):
fake = lambda obj, dummy: obj
for item in e:
yield getattr(item, 'strftime', partial(fake, item))('%Y-%m-%d')
e = (datetime(2007,8,1),datetime(2007,8,2) ,42, 0.1, 0.2, 0.3, 1138)
print tuple(iformat(e))
print "%s\t%s\t%d\t%f\t%f\t%f\t%d" % tuple(iformat(e))
More information about the Python-list
mailing list