如何从循环中输出五个列表?

时间:2013-11-11 04:38:17

标签: python

这是我的代码:

import re
with open("C:\\Corpora\\record-13.txt") as f:
    concepts = f.readlines()
    j = 0
    for line in concepts:
       PATTERN = re.compile(r'''((?:[^ "]|"[^"]*")+)''')
       TokCurrLineCon = PATTERN.split(line)[1::2]
       temp = TokCurrLineCon[1].split(':')
       StartLineNum[j] = temp[0]
       StartOffset[j] = temp[1]
       temp = TokCurrLineCon[2].split('||')
       EndOfCon[j] = temp[0]
       TypeOfCon[j] = temp[1]
       temp = EndOfCon[j].split(':')
       EndLineNum[j] = temp[0]
       EndOffset[j] = temp[1]
       temp = TypeOfCon[j].split('"')
       TypeOfCon[j] = temp[1]
       j +=1

我需要5个列表作为结尾(StartLineNum,StartOffset,EndLineNum,EndOffset,TypeOfCon),但是当我运行它时我遇到错误StartLineNum[j] = temp[0] TypeError: 'str' object does not support item assignment 知道怎么解决吗?

1 个答案:

答案 0 :(得分:1)

错误消息告诉您StartLineNumstr,因此StartLineNum[j] = <anything>是非法的。

根据您的说明,您似乎期望StartLineNum成为list。所以可能问题是你在上面的代码中的某处构造了一个字符串而不是一个列表。由于我们无法看到该代码,因此我们无法修复它,除非您要创建列表,如果您需要列表。

但是,我怀疑代码中存在另一个问题。为了实现这一点,StartLineNum必须不仅仅是一个列表,而是一个已经拥有与文件一样多的成员的列表。但是,在您阅读整个文件之前,您无法知道有多少。更好的解决方案是在列表中使用append方法。 (那么你也不需要j变量。)例如:

StartLineNum = []
for line in concepts:
    # blah blah
    StartLineNum.append(temp[0])
    # etc.