对于句子理解的实验,我准备了一组文件,每个文件都包含一个如下所示的列表行:
1 14 2“实验句”
“1 14 2”是参考编号。出于实验的目的,我必须随机化每个文件中的句子,其约束条件是没有两个相邻的句子可以具有相同的第三个数字。那是
1 14 2
1 14 3
是可接受的序列,但是
1 14 2
1 13 2
不是。
我编写了一个函数line_randomizer(filename)
,将filename
中的所有行随机化并将它们放在buffer = []
上,并使用{limit
中的行数定义buffer
变量1}}。然后,我写了以下函数:
def checker():
counter = 0
while counter < limit:
next = counter + 1
val1 = buffer[counter].split(" ")[2]
val2 = buffer[next].split(" ")[2]
if int(val1) == int(val2):
print("bad sequence; starting new randomization")
line_randomizer(filename)
else:
print("continue checking")
counter = counter + 1
当我在python解释器上运行它(从shell调用)时,一切正常,但是当我在.py脚本上编写完全相同的代码时,我得到了这个错误。
val1 = buffer[counter].split(" ")[2]
TypeError: 'type' object is unsubscriptable
为什么这只发生在脚本上?
提前致谢。
答案 0 :(得分:0)
在命令行会话中,您必须将buffer
设置为某个内容。
但是,在您的脚本中,没有人设置buffer
,因此它使用内置名称作为类型对象,与大多数类型一样,它是unsubscriptable。