问题'方法'对象不可订阅

时间:2016-01-10 03:22:15

标签: python string sorting io priority-queue

我有一个包含

的文本文件
  

id_is_g0000515

     

num_is_0.92

     

id_is_g0000774

     

num_is_1.04

     

id_is_g0000377

     

num_is_1.01

     

id_is_g0000521

     

num_is_5.6

它假设通过" g0000515"对数据进行排序。仅限数字" 0.92"没有字符串" id_is _"和" num_is _"。它给了我一个错误TypeError:'方法'对象不可订阅。有人能帮我吗?

    import os, sys, shutil, re


def readFile():
    from queue import PriorityQueue
    q = PriorityQueue()
    #try block will execute if the text file is found
    try:
        fileName= open("Real_format.txt",'r')
        #for tuple in fileName:
            #fileName.write('%s',tuple)
        for line in fileName:
                for string in line.strip().split(','):
                    if string.find("id_is_"):
                        q.put[-4:] #read the ID only as g0000774
                    elif string.find("num_is_"):
                        q.put[-4:] #read the num only as 0.92

        fileName.close() #close the file after reading          
        print("Displaying Sorted Data")
        #print("ID TYPE       Type")
        while not q.empty():
            print(string[30:35] + ":     " +q.get())
            #print(q.get())

            #catch block will execute if no text file is found
    except IOError:
                print("Error: FileNotFoundException")
                return

readFile() 

1 个答案:

答案 0 :(得分:2)

您正尝试在此处切片PriorityQueue.put()方法:

q.put[-4:]

这不起作用;方法对象不可切片。我想你想要对string变量进行切片,并将除前4个字符之外的所有字符放入队列中:

q.put(string[4:])

请注意,我在那里使用了号码;你不希望列表中有4个字符,除了第4个字符外你想要的一切。

当字符串以"num_is_"开头时,您需要跳过更多字符; num_is_是7个字符,而不是4个字符:

q.put(string[7:])