需要使用csvReader

时间:2018-03-17 21:21:47

标签: python

我正在使用Python,csvReader从CSV读取。我的一个列有多个由“|”分隔的变量,并且想要写入单独的列。 例如,第3列包含不同的运输“汽车|火车|飞机|驾驶室”的行,并且想要写入具有四个单独列的新csv。每个单元格可以包含1-5个变量。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

如果该列不需要像子CSV那样实际解析(例如,其中没有引用或转义),您可以使用split将其拆分:

col2vals = row[2].split('|')

如果您要将每个row[2]替换为多个结果值,请使用切片分配:

row[2:3] = row[2].split('|')

或者,如果您希望将其拆分为单独的行,只需循环结果并append / yield / newcsv.writerow /无论您对每个原始行执行的操作如何

如果列可能有引号或转义,您可以再次使用csv,方法是将StringIO文件对象传递给它:

col2 = row[2]
fakefile = io.StringIO(col2)
subreader = csv.reader(fakefile, delimiter='|')
col2vals = next(subreader)

你当然可以把整个事情放在一行,但我不确定结果是否可读;可能在两个极端之间的某个地方是最好的。

row[2:3] = next(csv.reader(io.StringIO(row[2]), delimiter='|'))