Python 为什么我得到TypeError:需要一个整数?
这是我的代码片段,其中回溯调用显示错误:Python 为什么我得到TypeError:需要一个整数?,python,Python,这是我的代码片段,其中回溯调用显示错误: def categorize(title): with conn: cur= conn.cursor() title_str= str(title) title_words= re.split('; |, |\*|\n',title_str) key_list= list(dictionary.keys()) flag2= 1 for word in title_words:
def categorize(title):
with conn:
cur= conn.cursor()
title_str= str(title)
title_words= re.split('; |, |\*|\n',title_str)
key_list= list(dictionary.keys())
flag2= 1
for word in title_words:
title_letters= list(word)
flag1= 1
for key in key_list:
if key==title_letters[0]:
flag1= 0
break
if flag1== 0:
start=dictionary.get(title_letters[0])
end= next_val(title_letters[0])
for i in xrange (start,end):
if word==transfer_bag_of_words[i]:
flag2= 0
break
if flag2== 0:
cur.execute("select Id from articles where title=title")
row_id= cur.fetchone()
value= (row_id,'1')
s= str(value)
f.write(s)
f.write("\n")
break
return
def next_val(text):
for i,v in enumerate(keyList):
if text=='t':
return len(transfer_bag_of_words)
elif v==text:
return dictionary[keyList[i+1]]
这是回溯呼叫:
Traceback (most recent call last):
File "categorize_words.py", line 93, in <module>
query_database()
File "categorize_words.py", line 45, in query_database
categorize(row)
File "categorize_words.py", line 67, in categorize
for i in xrange (start,end):
TypeError: an integer is required
这是数据库文件的可下载链接map_letter_to_pos试图修改全局变量keyList,但没有将其指定为全局变量,因此它只修改keyList的本地副本,然后丢弃它。这会导致next_val无需迭代,因此它永远不会到达if elif,并返回None
end = None
range(start,end) # None is not an int
这需要一个新的解决方案。如果这两个变量的类型真的是int,这就不是问题了。@joelgoldstick,我不明白。我已经提供了给出错误的代码部分
start
和/或end
不是整数。我知道你说你检查过了,但是你错了。@MorganThrapp的意思是如果我们不能在我们的机器上运行代码来测试并得到与你相同的错误。bag\u of_words
定义在哪里?你用了两次,但我看不出你在哪里把它传递到这两个函数中?也被破坏了。当您从未查看时,您非常确定开始和结束是int,错误消息清楚地告诉您它们不是。:)
end = None
range(start,end) # None is not an int