如何从csv中读取第一列并分离成多维数组

时间:2019-01-30 00:13:06

标签: python arrays csv

我正在尝试将从.csv文件中读取的列分隔为多维数组。因此,如果将第一列读入单个数组,并且看起来像这样:

t = ['90-0066', '24', '33', '34', '91-0495', '22', '33', '92-6676', '23', '32']

我该如何在python中为每个值(例如“ 90-0066”)编写代码,将以下数字放入数组中,直到下一个-值?所以我希望数组看起来像这样:

t = [['24', '33', '34'], ['22', '33'], ['23', '32']]

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以在列表理解中使用itertools.groupby

from itertools import groupby
t = [list(g) for k, g in groupby(t, key=str.isdigit) if k]

t变为:

[['24', '33', '34'], ['22', '33'], ['23', '32']]

如果数字可能是浮点数,则可以改用正则表达式:

import re
t = [list(g) for k, g in groupby(t, key=lambda s: bool(re.match(r'\d+(?:\.\d+)?$', s)) if k]

答案 1 :(得分:1)

或者最长zip,并且具有两个列表理解:

>>> from itertools import zip_longest
>>> l=[i for i,v in enumerate(t) if not v.isdigit()]
>>> [t[x+1:y] for x,y in zip_longest(l,l[1:])]
[['24', '33', '34'], ['22', '33'], ['23', '32']]
>>>