我有一个来自csv文件的列表,即
list_from_csv= ["","","1","2","","","3","4"]
对于我的用例,我需要获得一个看起来像这样的列表
input_list =[[1,2],[3,4]]
所以基本上我想基于“”分隔符分隔列表 我最初尝试过这样的事情
for i in list_from_csv:
if i != "":
input_list.append(i)
然而,这给了我一个输出[1,2,3,4]
在python中有一个技巧或命令来实现这一点。另请注意我对python很新,所以任何帮助都将不胜感激。此外,我试图查看每个地方,但找不到这样的例子
答案 0 :(得分:4)
以下是使用itertools.groupby
进行此操作的一种方法:
from itertools import groupby
lst= ["","","1","2","","","3","4"]
result = [[int(i) for i in g] for k, g in groupby(lst, lambda x: x!='') if k]
print(result)
# [[1, 2], [3, 4]]
这些项目是否为空字符串。只需使用False
的组密钥过滤空字符串组。
答案 1 :(得分:2)
使用itertools.groupby
:
>>> [list(map(int, s)) for empty, s in itertools.groupby(list_from_csv, lambda s: s=="") if not empty]
[[1, 2], [3, 4]]
答案 2 :(得分:0)
不使用任何导入的模块的替代解决方案:
输入列表有意略微复杂(对于更复杂的情况)
list_from_csv = ["","","1","2","3","","4","5", "", "", "6", "", "7"]
str = [[int(n) for n in i] for i in ''.join([d if d else ' '
for d in list_from_csv]).strip().split(' ') if i]
print(str)
输出:
[[1, 2, 3], [4, 5], [6], [7]]