这是我的代码:
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
知道怎么解决吗?
答案 0 :(得分:1)
错误消息告诉您StartLineNum
是str
,因此StartLineNum[j] = <anything>
是非法的。
根据您的说明,您似乎期望StartLineNum
成为list
。所以可能问题是你在上面的代码中的某处构造了一个字符串而不是一个列表。由于我们无法看到该代码,因此我们无法修复它,除非您要创建列表,如果您需要列表。
但是,我怀疑代码中存在另一个问题。为了实现这一点,StartLineNum
必须不仅仅是一个列表,而是一个已经拥有与文件一样多的成员的列表。但是,在您阅读整个文件之前,您无法知道有多少。更好的解决方案是在列表中使用append
方法。 (那么你也不需要j
变量。)例如:
StartLineNum = []
for line in concepts:
# blah blah
StartLineNum.append(temp[0])
# etc.