# ヘッダで決まった幅に分割

# やりたいこと

こんな形式のデータを、配列かハッシュとして取り出す

 ct        dt
 --------- ---------------
       125     Feb 23 2021
       742     Feb 24 2021

(TODO: 件名はもうちょっと考える)

# コード

#!/usr/bin/env python
# coding: utf-8

import json

text = '''\
 ct        dt
 --------- ---------------
       125     Feb 23 2021
       742     Feb 24 2021\
'''

def parse_line(line, seps):
  cols = []
  for [start, end] in seps:
    cols.append((line[start:end].strip()))
  
  return cols

def parse_separators(line):
  idx = 1
  seps = []
  for c in line.strip().split(' '):
    seps.append([idx, idx + len(c)])
    idx += len(c) + 1
  
  return seps

lines   = text.split('\n')
seps    = parse_separators(lines[1])
headers = parse_line(lines[0], seps)

rows = []
for line in lines[2:]:
  row = {}
  for [i, v] in enumerate(parse_line(line, seps)):
    row[headers[i]] = v
  
  rows.append(row)

print(json.dumps(rows, indent=2))

# 課題

もうちょい きれいに かつコンパクトに書けないものか

# いつ使うのか

DB の CLI (isqlとか) のデータを整形したいとき・・

[ 📩 ご意見 ]