-2

这是我的代码:

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 知道如何修复它吗?

4

1 回答 1

1

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

根据您的描述,听起来您希望StartLineNum成为list. 所以大概问题是你在上面的代码中的某个地方构造了一个字符串而不是一个列表。由于我们看不到该代码,我们无法修复它,除了说如果你想要一个列表就应该创建一个列表。

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

StartLineNum = []
for line in concepts:
    # blah blah
    StartLineNum.append(temp[0])
    # etc.
于 2013-11-11T04:45:45.530 回答