<p>如果首先拆分数据,则可以使用CSV库:</p>
<pre><code>import csv, re, StringIO
with open("/Users/Wilson/research/isochrones/SDSSugriz/fehm20afep4y33.SDSSugriz", "r") as f_input:
data = f_input.read()
lblocks = re.findall(r"#AGE=\s+?(.*?)\s+(?:.*?[\r\n]|\Z){2}(.*?(?=#AGE|\Z|^$))", data, re.S + re.M)
for age, block in lblocks:
csv_reader = csv.reader(StringIO.StringIO(block), delimiter=" ", skipinitialspace=True)
print "Age:", age
for cols in csv_reader:
print " sdss_g %s, sdss_r %s" % (cols[6], cols[7])
</code></pre>
<p>这将产生以下输出:</p>
<pre><code>Age: 1.000
sdss_g 13.9245, sdss_r 12.2511
sdss_g 13.4392, sdss_r 11.8286
sdss_g 12.9522, sdss_r 11.4091
sdss_g 12.4008, sdss_r 10.9372
sdss_g 11.7681, sdss_r 10.3975
Age: 1.250
sdss_g 13.9125, sdss_r 12.2406
sdss_g 13.4285, sdss_r 11.8194
sdss_g 12.9418, sdss_r 11.4002
sdss_g 12.3907, sdss_r 10.9286
sdss_g 11.7688, sdss_r 10.3980
sdss_g 11.2608, sdss_r 9.9652
sdss_g 11.0263, sdss_r 9.7653
sdss_g 10.9277, sdss_r 9.6812
sdss_g 10.8597, sdss_r 9.6223
Age: 1.500
sdss_g 13.8121, sdss_r 12.1528
sdss_g 13.3328, sdss_r 11.7366
sdss_g 12.8387, sdss_r 11.3119
sdss_g 12.2706, sdss_r 10.8261
sdss_g 11.6834, sdss_r 10.3250
</code></pre>
<p>使用Python2.7测试</p>