2014-03-18 42 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)