多个阵列中的打印值出现了混乱

时间:2014-03-18 22:21:10

标签: python regex json printing newline

数组中的值很好。如果我在一个循环中单独打印出来,它们应该按照它们的形式出现,但是当我把它们放在一起时,它不打印前两个值并且混淆其余的值。这是打印片段:

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 [i]。

如果我像这样注释掉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

到底发生了什么事?数组中的所有内容都是正确的并且处于正确的位置,为什么会发生这种情况呢?

1 个答案:

答案 0 :(得分:1)

看起来你正在尝试输出json。而不是构建一个字符串,为什么不创建一个字典列表并通过类似的东西将其转储到json:

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