Aqui está um script Python simples que faz o que você quer:
#!/usr/bin/env python2
# -*- ascii -*-
"""rewrapcsv.py"""
import sys
datafile = sys.argv[1]
columns = int(sys.argv[2])
with open(datafile) as filehandle:
buffer = []
for line in filehandle:
buffer.extend(line.strip().split('|'))
while len(buffer) >= columns:
print('|'.join(buffer[0:columns]))
buffer = buffer[columns:]
print('|'.join(buffer[0:columns]))
Aqui está um arquivo de dados de exemplo ( data.csv
) retirado da sua pergunta:
Number|Level|Description|Unit|Rate|Special Rate|Notes
101|0|Apple, Orange, Banana||6.80%|8.56|Free
|1|Fruits:||||
102|2|Banana,
Orange, Grapes Kiwi||||
Veja como você pode executar o script:
python rewrapcsv.py data.csv 6
E aqui está a saída:
Number|Level|Description|Unit|Rate|Special Rate
Notes|101|0|Apple, Orange, Banana||6.80%
8.56|Free||1|Fruits:|
|||102|2|Banana,
Orange, Grapes Kiwi||||