如何更正列表格式?

时间:2017-04-24 14:15:20

标签: python-2.7

首先我写一个测试代码:

a = [-0.2364, 2.2524, 8.4896,'a']
l = []
for i,each in enumerate(a,start=1):
    l.append(["{}, {}".format(i,each)])
lst = str(l).translate(None, "'")
print lst

,输出正常

[[1, -0.2364], [2, 2.2524], [3, 8.4896], [4, a]]

这就是我想要为列表中的每个项目添加序列号。然后我尝试使用httplib读取数据并替换测试列表a

a = response.read()
l = []
for i,each in enumerate(a,start=1):
    l.append(["{}, {}".format(i,each)])
lst = str(l).translate(None, "'")
print a    
print lst

但输出改变如下:

[-0.035308122832456316]
[[1, [], [2, -], [3, 0], [4, .], [5, 0], [6, 3], [7, 5], [8, 3], [9, 0], [10, 8], [11, 1], [12, 2], [13, 2], [14, 8], [15, 3], [16, 2], [17, 4], [18, 5], [19, 6], [20, 3], [21, 1], [22, 6], [23, ]]]

列表a似乎没问题。但是输出lst并不是我所期望的。对于这种情况,我试图得到如下输出:

[-0.035308122832456316]
[[1,-0.035308122832456316]]

我该如何解决这个问题?谢谢!

2 个答案:

答案 0 :(得分:0)

尝试使用字典而不是列表:

a = [-0.2364, 2.2524, 8.4896, 'a']
l = {}
for i, each in enumerate(a, start=1):
    l[i] = each
print l

模拟a是包含1个项目的列表的指示:

a = [-0.035308122832456316]
l = {}
for i, each in enumerate(a, start=1):
    l[i] = each
print l

如其他人所指出的那样,a是一个值为"[-0.035308122832456316]"的字符串,则将其转换为列表:

a = "[-0.035308122832456316]"
if isinstance(a, str):
    a = [a[1:-1]]
l = {}
for i, each in enumerate(a, start=1):
    l[i] = each
print l

答案 1 :(得分:0)

正如我上面提到的,如果 a 是字符串'[-0.035308122832456316]',或者甚至包含多个列表值,例如a = '[-0.035308122832456316,89427873479875]',只需使用下面的代码,它就可以正常使用。< / p>

import ast
a = response.read()
a = ast.literal_eval(a) #Convert String representation of list to list
l = []
for i,each in enumerate(a,start=1):
    l.append(["{}, {}".format(i,each)])
lst = str(l).translate(None, "'")
print a    
print lst