在python中解析数组的一些问题

时间:2014-11-14 23:36:26

标签: python arrays django

我有两个数组,例如,第一个可能是:

self.history = [[1, 15, 12, 51], [15, 5, 12, 4]]

和第二个:

date = ["10.11.2014", "11.11.2014", "12.11.2014", "13.11.2014"]

我需要输出以下格式:

""10.11.2014,1,15\n" + "11.11.2014,15,5\n" + "12.11.2014,12,12\n" + "13.11.2014,51,4\n""

我已经实现了一次这个结果,但重新启动后它再也无法工作了。

以下是相关的代码段:

        zips = zip(*self.history)
        zips2 = zip(date_arr, zips)
        print zips2
        zips = ['"{},{}\\n" + '.format(a, ','.join(b)) for a, b in zips2]
        for i in zips:
                returning = returning + i
        print returning
        self.history = returning
        return self.history

返回以下错误(在django中):"序列项0:期望字符串,int found"。 导致错误的原因是什么?

3 个答案:

答案 0 :(得分:4)

"\n".join(','.join(str(i) for i in x) for x in zip(date, *history))

答案 1 :(得分:1)

问题在于此部分join(b) for a, b in zips2。 join(b)失败,因为b是int的列表。在调用int之前,您需要将此string列表转换为join的列表。

将此更改为: join((str(i) for i in b)) for a,b in zips2它应该有用。

这是我的答案:

history = [[1, 15, 12, 51], [15, 5, 12, 4]]
date = ["10.11.2014", "11.11.2014", "12.11.2014", "13.11.2014"]
result = []
for k, v in zip(date, zip(*history)):
    result.append('%s,%s\n' % (k, ','.join([str(a) for a in v])))

print result

答案 2 :(得分:0)

>>> [ ",".join(map(str,x))+'\n' for x in zip(date,*history) ]
['10.11.2014,1,15\n', '11.11.2014,15,5\n', '12.11.2014,12,12\n', '13.11.2014,51,4\n']

>>> " + ".join([ "\""+",".join(map(str,x))+"\n\"" for x in zip(date,*history) ])
'"10.11.2014,1,15\n" + "11.11.2014,15,5\n" + "12.11.2014,12,12\n" + "13.11.2014,51,4\n"'