如何解析包含decimal和datetime.datetime的列表?

时间:2013-07-13 09:06:27

标签: python matplotlib

我有一个来自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。 有人可以帮忙吗?

2 个答案:

答案 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)