2017-04-24 29 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

謝謝! –