Skip to main content
 首页 » 编程设计

python之清理嵌套列表

2025年05月04日13mayingbao

我有一个巨大的嵌套列表,看起来像这样,只是更长:

fruit_mess = [['watermelon,0,1.0\n'], ['apple,0,1.0\n'], ['"pineapple",0,1.0\n'], ['"strawberry, banana",0,1.0\n'], ['peach plum pear,0,1.0\n'], ['"orange, grape",0,1.0\n']] 

最终我想要这样的东西:

neat_fruit = [['watermelon',0,1.0], ['apple',0,1.0], ['pineapple',0,1.0], ['strawberry, banana',0,1.0], ['peach plum pear',0,1.0], ['orange, grape',0,1.0]] 

但我不确定如何处理引号中的双引号以及如何将水果与数字分开,尤其是用逗号分隔一些水果。我尝试了很多东西,但一切似乎都让它变得更加困惑。任何建议将不胜感激。

请您参考如下方法:

使用 csv 模块(在标准库中)处理名称中带有逗号的双引号水果:

import csv 
import io 
 
fruit_mess = [['watermelon,0,1.0\n'], ['apple,0,1.0\n'], ['"pineapple",0,1.0\n'], ['"strawberry, banana",0,1.0\n'], ['peach plum pear,0,1.0\n'], ['"orange, grape",0,1.0\n']] 
 
# flatten the list of lists into a string: 
data='\n'.join(item[0].strip() for item in fruit_mess)     
reader=csv.reader(io.BytesIO(data)) 
neat_fruit=[[fruit,int(num1),float(num2)] for fruit,num1,num2 in reader] 
 
print(neat_fruit)     
# [['watermelon', 0, 1.0], ['apple', 0, 1.0], ['pineapple', 0, 1.0], ['strawberry, banana', 0, 1.0], ['peach plum pear', 0, 1.0], ['orange, grape', 0, 1.0]]