2017-05-30 31 views
0

データはこの"インボイス"レベルのデータを解析用のカラムデータに解析するにはどうすればよいですか?

請求書のように見える1

ID 
Lat 
Long 
Year 
Month 
Observations 
1 
. 
. 
. 
n 

#-----

請求書2-nは

私の目標は、終了することである(パターンが繰り返されます)表形式のテーブルで

ID | Lat | Long | Year | Month | Obs 1 | Obs 2 | Obs 3 | Obs n 
0請求書

間の区切り文字として人の

#-----行為は、それはその時点でlongに広いから行くのは簡単だが、マッピング・ルールを作成し、データを反復処理するための最良の方法は何ですか?すべてのデータは1つの.csvファイルに保存されていますが、100万行以上あります。

私は、開始する場所と、この形式でデータを処理する一般的なプロセスを探しています。

+0

「n」は既知で修正済みですか? – DyZ

+0

@DYZ 'n'は知られていますが、請求書に基づいて変わります。 I.請求書1には38個のOBがあり、請求書4には90個が含まれている可能性があります。 – Mako212

+0

次の請求書がいつ開始されるのですか? – DyZ

答えて

0
with open('path/to/input') as infile, open('path/to/output', 'w') as fout: 
    outfile = csv.writer(fout) 
    invoice = [] 
    for line in infile: 
     if line.startswith("Invoice"): 
      outfile.writerow(invoice) 
      invoice = [] 
      continue 
     line = line.strip() 
     if not line: continue 
     invoice.append(line) 
    outfile.writerow(invoice) 
0

単純なループが動作するはず:

with open('...') as infile: 
    data = [] 
    line = [] 
    item = infile.readline().strip() 
    while item != '': 
    if item.startswith('#-----'): 
     data.append(line) 
     line = [] 
    else: 
     line.append(item) 
    item = infile.readline().strip() 

を終わり、dataはリストのリストは、(必ずしも矩形)です。

関連する問題