2016-11-14 7 views
0

私はCSVファイルを取得し、Python 2.7を使用してファイルをソートすると、ブロックとロットの2つの列に基づいて個別の値を取得します。列内のセルの値に基づいて個々の行を作成する

Beginning

私は値が次のようになります。新しいCSVにこれを自動化するためのPythonを使って余分な行を作成するために多くの値にできるようにしたい

描か:私のデータは、以下のリンクで、今のように見えますアウト新しいCSV

End Result

上だから、私は「」その行はにコピーされますがある場合は、行と列を読み、たくさんの列のセルの値に基づいて必要なことを知っています他のcsvの次の行と最初の列の前のすべての値がコピーされ、 n 2番目、3番目など

コンマが区切られた後、範囲は3番目のCSVで同様に管理されます。単一の値がある場合、行全体がそのままコピーされます。

先進的なヘルプありがとうございます。

答えて

0

これは動作するはずです。

  1. Windowsでは、バイナリモードでファイルを開いてください。そうしないと、新しい改行が2行追加されます。
  2. は、私は、細胞が,によって,
  3. まず、分割が含まれているため、行は、その後
  4. print line
  5. エラーチェックは読者の練習として残してデバッグ用です範囲
  6. をチェックし、 ;で分離されていると仮定しました。

コード:

import csv 

file_in = csv.reader(open('input.csv', 'rb'), delimiter=';') 
file_out = csv.writer(open('output.csv', 'wb'), delimiter=';') 

for i, line in enumerate(file_in): 
    if i == 0: 
     # write header 
     file_out.writerow(line) 
     print line 
     continue 

    for j in line[1].split(','): 
     if len(j.split('-')) > 1: 
      # lines with - 
      start = int(j.split('-')[0]) 
      end = int(j.split('-')[1]) 
      for k in xrange(start, end + 1): 
       line[1] = k 
       file_out.writerow(line) 
       print line 
     else: 
      # lines with , 
      line[1] = j 
      file_out.writerow(line) 
      print line 
関連する問題