我有一个来自sql输出的列表,看起来像这样
[(Decimal('264'), datetime.datetime(2012, 11, 1, 0, 0)), (Decimal('445812776'), datetime.datetime(2012, 12, 1, 0, 0)), (Decimal('545942604'), datetime.datetime(2013, 1, 1, 0, 0))]
我想使用matplotlib绘制图形,其中x为日期时间,y为相应的小数。
为此我试图将其拆分为两个列表,其中一个包含小数,另一个包含datetime,但我无法解析它我试过这个
def convertTupletoString(s):
return str(list(s)).strip('[]').strip('\'')
t=[]
d=[]
suppose list is x
for i in list(x):
s = convertTupletoString(i)
x = s.find(",")
traffic = float(s[:x])
t.append(traffic)
date = datetime(s[x+1:])
d.append(date)
pyplot.plot(t,d)
我无法转换为float错误,也无法转换为datetime。 有人可以帮忙吗?
答案 0 :(得分:1)
您的日期时间已经日期时间,请尝试以下内容:
>>> import datetime
>>> Decimal = int
>>> x = [(Decimal('264'), datetime.datetime(2012, 11, 1, 0, 0)), (Decimal('445812776'), datetime.datetime(2012, 12, 1, 0, 0)), (Decimal('545942604'), datetime.datetime(2013, 1, 1, 0, 0))]
>>> x[0]
(264, datetime.datetime(2012, 11, 1, 0, 0))
>>> x[0][1]
datetime.datetime(2012, 11, 1, 0, 0)
>>> d = [b for (a,b) in x]
>>> t = [a for (a,b) in x]
答案 1 :(得分:1)
首先检查变量的类型,然后决定要做什么......
if isinstance(x, datetime.datetime)
if isinstance(x, basestring)