在多个数组中打印值会造成混乱

2024-06-16 13:40:55 发布

您现在位置:Python中文网/ 问答频道 /正文

数组中的值很好。如果我在一个循环中分别打印它们,它们会按原样打印出来,但是当我把它们放在一起的时候,它不会打印前两个值,并且会把其余的值弄乱。以下是打印片段:

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 '['
for i in range(1, x):
    print '{\"' + fNames[0] + '\":"' + fNames[i] + '\", \"' + lNames[0] + '\":\"' + lNames[i] + '\", \"' + descs[0] + '\":\"' #+ descs[i] + '\"},'
print ']'

除了“fname”中的“f”外,它还正确地打印出了大部分内容,注意它也没有打印出最后一个“\”:\“”。我已经通过filter()函数运行了数组来去除换行符,并确保我的regex不会提取它们。我就是这样填充数组的:

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

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


Tags: inreforsearchline数组descriptionbishop
1条回答
网友
1楼 · 发布于 2024-06-16 13:40:55

看起来您正在尝试输出json。与其构建一个字符串,不如创建一个字典列表,并通过如下方式将其转储到json:

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

相关问题 更多 >