我正在从CSV文件的特定值中创建制表符分隔文件。 CSV文件包含上个月所有订单,我需要正确格式化才能导入当前使用的会计软件。下面是数据从CSV文件中的示例:将CSV转换为TDV - 格式问题
Customer Order Number Item Line Number Quantity Product Description
cust1 Order #1 1 40 desc1
cust1 Order #2 1 101 desc2
cust2 Order #3 1 3 desc3
cust2 Order #3 2 8 desc3
cust2 Order #3 3 8 desc3
cust1 Order #4 1 75 desc4
现在,每个系列的Order Number
我需要创建TDV文件看起来像这样的一个部分:(忽略括号,这些都只是以显示数值来自上面)
1 cust1 HA5ZV1 Desc1 Due Date ...
2 1 (Item #) 40 (Qty) ... ... ...
1 cust1 HA6A17 Desc2 Due Date ...
2 1 (Item #) 101 (Qty) ... ... ...
1 cust2 HA6AM1 Desc3 Due Date ...
2 1 (Item #) 3 (Qty) ... ... ...
2 2 (Item #) 8 (Qty) ... ... ...
2 3 (Item #) 8 (Qty) ... ... ...
希望这是有道理的。到目前为止,我所做的是从原始CSV文件中创建一个字典,但对如何遍历我的字典并将标题(标有“1”的行)写入一次感到困惑,然后将值写入(标有“2”的行)每次出现相同的Order Number
。这是我到目前为止的代码:
data = csv.reader(open(import_dir))
fields = data.next()
new_file = export_dir+os.path.basename(import_dir)
tab_file = open(export_dir+os.path.basename(import_dir), 'a+')
for row in data:
items = zip(fields, row)
item = {}
for (name, value) in items:
item[name] = value.strip()
tab_file.write('1\t'+item['Customer']+'\t'+item['Order Number']+'\t'
+item['Product Description']+'\t'+item['Due Date']+'\n'+
'2\t'+item['Item Line Number']+'\t'+item['Quantity']+'\t'+
...
但这种代码把标题数据每行一个项目之前,而不是将其仅在每个订单的开始。如果每个客户只订购一件商品,那就没有问题,但由于某些订单有多个订单项,因此会导致格式化。如果任何人都能指出我会朝着正确的方向发展,那将是很棒的。谢谢!
使用'csv.writer(tab_file,delimiter ='\ t')'它会写入TSV文件.. –