2017-06-06 120 views
0

我想只保留我的嵌套列表中的字符串的特定部分。我的代碼如下:刪除嵌套列表中的字符串的一部分python

answers = [ 
    ['person1', ' 2 1": ["answer 1"], "', ' 3 1": ["answer 0"], "', ...] 
    ['person2', ' 2 1": ["answer 3"], "', ' 3 1": ["answer 1"], "', ...]] 

我想刪除該字符串的部分,使得只有一塊剩下的是:

answers = [ 
    ['person1', 'answer 1', 'answer 0', ...] 
    ['person 2', 'answer 3', 'answer 1', ...]] 
+0

其中'answers'對象來自哪裏? –

+0

可能重複的[Python在引號中查找文件中的文本](https://stackoverflow.com/questions/34155110/python-find-text-in-file-between-quotation-marks) – Techhead55

+0

@AzatIbrakov答案來自導入json的數據 – fcb434

回答

0

此代碼:

answers = [ 
      ['person1', ' 2 1": ["answer 1"], "', ' 3 1": ["answer 0"], "'], 
      ['person2', ' 2 1": ["answer 3"], "', ' 3 1": ["answer 1"], "']] 

result = [] 
for person_ans in answers: 
    list = [] 
    for val in person_ans: 
     if "[" in val: 
      temp = val.split("[") 
      output = temp[1].split("]")[0] 
      list.append(output) 
     else: 
      list.append(val) 
    result.append(list) 
print result 

輸出:

[['person1', '"answer 1"', '"answer 0"'], ['person2', '"answer 3"', '"answer 1"']] 
1

鑑於:

answers = [ 
    ['person1', ' 2 1": ["answer 1"], "', ' 3 1": ["answer 0"], "',], 
    ['person2', ' 2 1": ["answer 3"], "', ' 3 1": ["answer 1"], "',] 
] 

可以使用正則表達式來解析每個字符串爲所需圖案p

import re 


p = re.compile(r'(?!.*\[)(\w+\s*\d)') 
new_answers = [] 
for lst in answers: 
    new_answers.append([re.search(p, s).groups(0)[0] for s in lst]) 
new_answers 
# [['person1', 'answer 1', 'answer 0'], ['person2', 'answer 3', 'answer 1']] 

此特定pattern忽略所述第一支架的後面的字符「[」和找到的字母具有零個或多個空格和數字。

相關問題