0

我有一个来自 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 作为相应的小数。

为此,我试图将其拆分为两个列表,一个包含小数,另一个包含日期时间,但我无法解析它我试过这个

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)

我得到无法转换为浮点错误,也无法转换为日期时间。有人可以帮忙吗?

4

2 回答 2

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]
于 2013-07-13T09:15:15.713 回答
1

首先检查变量的类型,然后决定做什么......

if isinstance(x, datetime.datetime)
if isinstance(x, basestring)
于 2013-07-13T09:53:26.080 回答