2014-11-05 140 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

相关问题