これがその仕事をするためのコードです:
import re
# this is the same data just copy/pasted from your question
data = """ ahi1
b/se
ahi
test -2.435953
1.218364
ahi2
b/se
ahi
test -2.001858
1.303935"""
# what we're gonna do, is search through it line-by-line
# and parse out the numbers, using regular expressions
# what this basically does is, look for any number of characters
# that aren't digits or '-' [^-\d] ^ means NOT
# then look for 0 or 1 dashes ('-') followed by one or more decimals
# and a dot and decimals again: [\-]{0,1}\d+\.\d+
# and then the same as first..
pattern = re.compile(r"[^-\d]*([\-]{0,1}\d+\.\d+)[^-\d]*")
results = []
for line in data.split("\n"):
match = pattern.match(line)
if match:
results.append(match.groups()[0])
pairs = []
i = 0
end = len(results)
while i < end - 1:
pairs.append((results[i], results[i+1]))
i += 2
for p in pairs:
print "%s, %s" % (p[0], p[1])
出力:
>>>
-2.435953, 1.218364
-2.001858, 1.303935
番号を印刷する代わりに、リストに保存して、後で一緒に圧縮することができます。私は、Python正規表現フレームワークを使用してテキストを解析しています。正規表現をまだ知らない場合にのみ、正規表現を選択することをお勧めします。テキストやあらゆる種類のマシン生成出力ファイルを解析するのは非常に便利だと思います。
編集:
ああ、ところで、パフォーマンスが心配な場合は、遅い古い2ghz IBM T60ラップトップでテストし、正規表現を使用して約200ミリ秒でメガバイトを解析できます。
更新:私は親切に感じたので、あなたのために最後のステップを行いました:P