“type object unsubscriptable”错误,但仅限于脚本

时间:2012-11-29 15:08:11

标签: python split

对于句子理解的实验,我准备了一组文件,每个文件都包含一个如下所示的列表行:

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

为什么这只发生在脚本上?

提前致谢。

1 个答案:

答案 0 :(得分:0)

在命令行会话中,您必须将buffer设置为某个内容。

但是,在您的脚本中,没有人设置buffer,因此它使用内置名称作为类型对象,与大多数类型一样,它是unsubscriptable。