我导入了一个CSV文件,它基本上是一个包含5个标题和5个元素的数据集的表。
使用此代码,我将数据转换为具有5位信息的个人列表(列表中的列表):
import csv
readFile = open('Category.csv','r')
categoryList = []
for row in csv.reader(readFile):
categoryList.append(row)
readFile.close()现在我有了一个列表[[a,b,c,d,e],[a,b,c,d,e],[a,b,c,d,e]...]
然而,在整个列表中的每个列表中的元素2 (categoryList[i][2])或'c‘是由可变长度的分隔符(':')分隔的字符串。如何将元素2转换为列表本身?基本上让它看起来像这样:
[[a,b,[1,2,3...],d,e][a,b,[1,2,3...],d,e][a,b,[1,2,3...],d,e]...]我考虑遍历每个列表元素并找到元素2,然后使用.split(':')命令将这些值分离出来。
发布于 2016-07-20 21:54:09
你提出的解决方案是可行的。你只需要在读完文件后再去做。你可以先把它作为输入来做。
for row in csv.reader(readFile):
row[2] = row[2].split(":") # Split element 2 of each row before appending
categoryList.append(row)编辑:我猜你知道拆分函数的用途。因此,我将解释row[2]。
你有一个像[[a,b,c,d,e],[a,b,c,d,e],[a,b,c,d,e]...]这样的数据,这意味着每个row都像[a,b,c,d,e],[a,b,c,d,e],[a,b,c,d,e],所以每个row2都对应于c。使用这种方法,您可以在附加并将其转换为[[a,b,c,d,e],[a,b,c,d,e],[a,b,c,d,e]...]之前更改所有的c。
发布于 2016-07-20 21:51:26
您可以对每一行使用列表理解,并将包含':'的项拆分为一个新的子列表
for row in csv.reader(readFile):
new_row = [i.split(':') if ':' in i else i for i in row]
categoryList.append(new_row)如果行中还有其他需要在':'上拆分的项目,则可以使用此方法。
否则,如果只有一个包含':'的项目,则可以直接在索引上拆分
for row in csv.reader(readFile):
row[2] = row[2].split(':')
categoryList.append(row)发布于 2016-07-20 21:52:39
不是很清楚你的结构,但是如果c是一个用:分隔的字符串,那么试试
列表(c.split(‘:’))
如果它解决了你的问题,请告诉我
https://stackoverflow.com/questions/38483118
复制相似问题