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