2014-03-18 61 views
1

數組中的值很好。如果我將它們單獨打印出來,它們會按照它們應該出來的方式打印出來,但是當我把它們放在一起時,它不會打印前兩個值,並且其餘的都是亂碼。這裏的打印片斷:打印多個數組中的值出現混亂

print '[' 
for i in range(1, x): 
    print '{\"' + fNames[0] + '\":"' + fNames[i] + '\", \"' + lNames[0] + '\":\"' + lNames[i] + '\", \"' + descs[0] + '\":\"' + descs[i] + '\"},\r' 
print ']' 

下面就是它輸出:

[ 
"},A really cool guy, "lname":"Bishop", "description 
"},A really cool galname":"Patzer", "description 
"},A really cool momlname":"Robertson", "description 
"},A really cool dadame":"Bishop", "description 
"},A really cool doglname":"Bishop", "description 
"},A really cool cat"lname":"Jack", "description 
] 

請注意,它不輸出FNAME [0]和FNAME [1]。

如果我註釋掉的print語句像這樣的結尾:

print '[' 
for i in range(1, x): 
    print '{\"' + fNames[0] + '\":"' + fNames[i] + '\", \"' + lNames[0] + '\":\"' + lNames[i] + '\", \"' + descs[0] + '\":\"' #+ descs[i] + '\"},' 
print ']' 

這其中大部分是正確的,打印出除了在其中「fname」的「f」和發現它不打印出來最後的'\':\「'都是。我已經通過filter()函數運行陣列去除換行符,並確保我的正則表達式不會將它們接受。這是我如何填充陣列:

with open(file, "rb") as fin: 
    for line in fin: 
     col1Reg = re.search('^(.+?)(?=,)', line) 
     fNames.append(col1Reg.group(0)) 

     col2Parsed = '(?<=' + fNames[x] + ',)(.*)(?=,)' 
     col2Reg = re.search(col2Parsed, line) 
     lNames.append(col2Reg.group(0)) 

     col3Parsed = '(?<=' + lNames[x] + ',)(.*)(?=\n)' 
     col3Reg = re.search(col3Parsed, line) 
     descs.append(col3Reg.group(0)) 

     x += 1 

這是怎麼回事?陣列中的每件事都是正確的,處於正確的位置,爲什麼會發生這種情況?

+0

+1「jarbled亂」 –

+0

在所有的嚴重性,雖然,這是一個很好的問題。 –

+0

你可以印刷陣列嗎?我的盲目猜測是在輸入中引用了一些引起混淆的東西 – immulatin

回答

1

它看起來像你試圖輸出json。而不是建立一個字符串,爲什麼不創建一個字典列表和轉儲它通過JSON的東西是這樣的:

import json 
list1 = [] 
for x in range(i): 
    list1.append({ 
    'name': 'value', 
    }) 
print json.dumps(list1, indent=4)