2016-10-26 111 views
0

我對這個主題Stack Overflow和其他地方做了一些研究,但仍然無法破解這個錯誤。Python:比較列表中的項目

我正在解析由書,章和詩句構成的文本的評論。在這個階段,我將所有評論按順序分開,但沒有組織起來,我希望每當我達到[1,1]的索引時,通過開始一個新的元素來分隔每個評論。我有提取該評論的指數,這似乎使工作得很好(打印的get_comment_index(comment)結果的方法,INDEX1get_comment_index(comment)[0]INDEX2get_comment_index(comment)[1]

INDEX1: 1 INDEX2: 1 
INDEX1: 1 INDEX2: 2 
INDEX1: 1 INDEX2: 3 
INDEX1: 1 INDEX2: 4 
INDEX1: 1 INDEX2: 5 
INDEX1: 1 INDEX2: 6 
INDEX1: 1 INDEX2: 7 
INDEX1: 1 INDEX2: 9 

然而,當我嘗試if語句趕上索引1: 1索引2:1,It't不觸發某種原因,這是我已經試過:

if cmp(get_comment_index(comment),[1,1])==0: 
if get_comment_index(comment)[0]==1 and get_comment_index(comment)[1]==1: 

我知道這是因爲我把跡線的if語句之後,他們還沒有顯示出來,甚至儘管我知道有這樣的記錄,如上圖所示oblem?

+1

您比較反對的權利類型? '1'與「1」不一樣。 'if get_comment_index(comment)== ['1','1']:...' – AChampion

+2

爲什麼'cmp()'?它很久以前就貶值了。 –

+0

@AChampion你是對的,即使我把索引看成一個int,因爲我使用正則表達式來獲取它,它確實是一個字符串。謝謝。 –

回答

0
  1. cmp已棄用。避免。
  2. 你確定get_comment_index()返回一個列表嗎?

這是你的程序的模擬版本:

>>> def foo(): 
...  return [1,1] 
... 
>>> cmp(foo(), [1,1]) 
0 
>>> foo()[0] 
1 
>>> foo()[1] 
1 
>>> 

現在,稍作修改:

>>> def bar(): 
...  return (1,1) 
... 
>>> cmp(bar(), [1,1]) 
1 
>>> cmp(bar(), [1,1]) 
1 
>>> bar()[0] 
1 
>>> bar()[1] 
1 
>>> 
+0

我想我應該把它作爲評論添加,而不是作爲答案。 – Sharad