正規表現とペアに分離:
In [1]: import re
In [2]: txt = '(((st 8) (pitch 67) (dur 4) (keysig 1) (timesig 12) (fermata 0))((st 12) (pitch 67) (dur 8) (keysig 1) (timesig 12) (fermata 0)))'
In [3]: [p.split() for p in re.findall('\w+\s+\d+', txt)]
Out[3]: [['st', '8'], ['pitch', '67'], ['dur', '4'], ['keysig', '1'], ['timesig', '12'], ['fermata', '0'], ['st', '12'], ['pitch', '67'], ['dur', '8'], ['keysig', '1'], ['timesig', '12'], ['fermata', '0']]
その後
辞書にそれを作る:
dct = {}
for p in data:
if not p[0] in dct.keys():
dct[p[0]] = [p[1]]
else:
dct[p[0]].append(p[1])
結果:
In [10]: dct
Out[10]: {'timesig': ['12', '12'], 'keysig': ['1', '1'], 'st': ['8', '12'], 'pitch': ['67', '67'], 'dur': ['4', '8'], 'fermata': ['0', '0']}
印刷:
print 'time pitch duration keysig timesig fermata'
for t in range(len(dct['st'])):
print dct['st'][t], dct['pitch'][t], dct['dur'][t],
print dct['keysig'][t], dct['timesig'][t], dct['fermata'][t]
あなたはデータが正しいとあなたはこのデータとドンが必要な場合は、フォーマットの制服は(一見そう思える)、およびことがわかっている場合
適切なフォーマットが...読者の練習として
ん[Pythonで解析S-式](http://stackoverflow.com/q/3182594)を助けますか? –
ありがとう、見てみましょう。 – qua
lispを使って別の形式に変換してみませんか? – Marcin