2017-04-24 24 views
0

首先我写一个测试代码:如何更正我的列表格式?

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是不是我expected.For这种情况下,我试图让输出,如:

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

我如何可以解决此感谢!

+0

你确定你得到的回应是一个列表不是字符串吗?就好像你正在一个字符串上运行你的代码,其中字符串中的每个字符被认为是** a **的列表项。 –

+0

是的。 '[-0.035308122832456316]'这是我的输出关于响应() –

+1

我仍然相信** a **是一个字符串''[-0.035308122832456316]''尝试检查'类型(a)' –

回答

0

正如我前面提到的,如果一个是一个字符串'[-0.035308122832456316]'或甚至像这样的多个列表值a = '[-0.035308122832456316,89427873479875]'只需使用下面的代码,它会为你工作的很好。

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 
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 
+0

谢谢! –