2014-11-05 117 views
-1

我有這樣的字符串列表:[['ROOT', 'S'], ['S', 'NP', ')', 'VP', ')'], ['NP', 'DT', 'NN']]如何根據python中的列表中的元素來分割列表?

我想,每當')'在列表中遇到的,應該把它分割到一個內部列表,而不是')',加' '雙方形成了新的名單。就像上面的例子中,有2次出現的')',所以我想輸出是這樣的:

[['ROOT', 'S'], ['S', 'NP', ' '], [' ', 'VP', ' '], [' '], ['NP', 'DT', 'NN']] 

如何做到這一點?

回答

1

將您liststring。根據你的需要,製作替代品。然後使用ast程序包將string轉換回數據結構(此例中爲列表),如果字符串格式正確。演示:

>>> import ast 
>>> lst=[['ROOT', 'S'], ['S', 'NP', ')', 'VP', ')'], ['NP', 'DT', 'NN']] 
>>> lst=str(lst) 
>>> lst=lst.replace('\')\'','\' \'], [\' \'') 
>>> lst=ast.literal_eval(lst) 
>>> lst 
[['ROOT', 'S'], ['S', 'NP', ' '], [' ', 'VP', ' '], [' '], ['NP', 'DT', 'NN']] 
1
L = [['ROOT', 'S'], ['S', 'NP', ')', 'VP', ')'], ['NP', 'DT', 'NN']] 

answer = [] 
for subl in L: 
    temp = [] 
    for elem in subl: 
     if elem != ")": 
      temp.append(elem) 
      continue 
     temp.append(' ') 
     answer.append(temp) 
     temp = [' '] 
    answer.append(temp) 

輸出:

In [4]: answer 
Out[4]: [['ROOT', 'S'], ['S', 'NP', ' '], [' ', 'VP', ' '], [' '], ['NP', 'DT', 'NN']] 
+0

可能會幫助,如果你寫了一些意見,並解釋實際發生的事情 – 2014-11-05 19:48:27

+0

@PadraicCunningham:that/would/help。但我今天生病了(因此我最小的存在)。以爲我仍然可以通過提供/一些/代碼來提供幫助。此外,SO上的所有帖子都在創意共享中,所以我認爲其他人可能也會貢獻...... – inspectorG4dget 2014-11-05 19:52:06

相關問題