我有一个下载推文的代码,我试图通过它将它标记为正面或负面,每次我标记一条推文我想从字符串中删除它所以我不会被要求在这里再次标记它到目前为止是我的代码
while True:
if len(tweet_list) == 0:
break
else:
tweet1= (np.random.choice(tweet_list))
print tweet1
judge = input("1 pos, 2 neg 3 skip: ")
if judge == 1:
tweet_pos.append(tweet1)
tweet_list.remove(tweet1)
if judge == 2:
tweet_neg.append(tweet1)
tweet_list.remove(tweet1)
在我标记第二条推文后,我收到了此错误
ValueError: list.remove(x): x not in list
答案 0 :(得分:0)
您可以执行以下操作:
newList = []
for myLetter in myList:
if myLetter is not 'x':
newList.append(myLetter)
newString = ''.join(newList)
答案 1 :(得分:0)
在你的while循环之外创建一个空列表,如下所示:
tweet_pos = []
tweet_neg = []
alreadySeen = []
修改代码中的第一个if
语句,如下所示:
if len(alreadySeen) == 20:
break
确保在显示推文时,您要使用tweet1.text
。有时它不会正确编码邮件,或根本不编码邮件,因此您可以使用tweet1.text.encode('utf-8')
。然后每次做出判断时,将该推文添加到alreadySeen
列表中。从此以后,检查它是否已经在该列表中,如果是,则继续获取随机推文,直到它还没有被看到。
if tweet1 not in alreadySeen:
print tweet1.text.encode('utf-8')
judge = input("1 pos, 2 neg, 3 skip: ")
if judge == 1:
tweet_pos.append(tweet1)
elif judge == 2:
tweet_neg.append(tweet1)
alreadySeen.append(tweet1)
最后,为了确认,您可以通过迭代tweet_pos
和tweet_neg
中的每条推文输出结果,并像之前一样打印每条推文。
print "My positive tweets: "
for pos in tweet_pos:
print pos.text.encode('utf-8')
print "My negative tweets: "
for neg in tweet_neg:
print neg.text.encode('utf-8')
希望这会有所帮助。