CSV ファイルの特定の値からタブ区切りファイルを作成する作業を行っています。CSV ファイルには先月のすべての注文が含まれており、現在使用している会計ソフトウェアにインポートできるように正しくフォーマットする必要があります。CSV ファイルからのデータのサンプルを次に示します。
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」でマークされた行) を 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'+
...
ただし、このコードは、ヘッダー データを各注文の最初だけに配置するのではなく、各明細項目の前に配置します。すべての顧客が 1 つのアイテムのみを注文した場合は問題ありませんが、一部の注文には複数の品目があるため、フォーマットが台無しになります。誰かが私を正しい方向に向けることができれば、それは素晴らしいことです. ありがとう!