将对象元组转换为字符串元组

时间:2014-05-22 12:50:36

标签: python tuples

>>> import MySQLdb
>>> db = MySQLdb.connect( host = "localhost", user ="root", passwd = "", db = "smoky_db" )
>>> cur = db.cursor()
>>> cur.execute( 'SELECT * FROM logs' )
3L
>>> rows = cur.fetchall()
>>> rows
((1L, datetime.datetime(2014, 5, 21, 0, 0)), (1L, datetime.datetime(2014, 5, 22, 0, 0)) )

如何将返回的对象元组转换为字符串元组,如下所示:

(('1', '2014-05-21 00:00:00'), ('2', '2014-05-22 00:00:00'))

3 个答案:

答案 0 :(得分:3)

只需重复项目并将它们转换为元组,就像这样

print tuple(tuple(str(item) for item in items) for items in d)
# (('1', '2014-05-21 00:00:00'), ('1', '2014-05-22 00:00:00'))

这里我们使用了两个生成器表达式。将对原始元组中的每个项执行最里面的一个(str(item) for item in items)。当嵌套项被字符串化时,我们迭代生成器表达式并再次将其转换为元组。

答案 1 :(得分:2)

在每个元素上调用str

>>> [tuple(map(str, tup)) for tup in tups]
[('1', '2014-05-21 00:00:00'), ('1', '2014-05-22 00:00:00')]

这是有效的,因为datetime个对象实现了__str__方法,由str函数调用。来自documentation

  

对于日期d,str(d)相当于d.isoformat('')。

答案 2 :(得分:1)

这应该可以解决问题:

out = tuple((str(k),str(v)) for (k,v) in rows)