我有一个包含
的文本文件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()
答案 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:])