<html><body><div style="color:#000; background-color:#fff; font-family:times new roman, new york, times, serif;font-size:12pt"><div><span><div style="font-size: 12pt;"><span>Thanks Steve. </span></div><div style="background-color: transparent;"><br></div><div style="background-color: transparent;"><span>But one question, when I print, I get extra empty lines. How to get rid of them!  Thanks again.</span></div><div style="background-color: transparent;"><span><div style="background-color: transparent;">>>> f = open('test')</div><div style="background-color: transparent;">>>> head = '---'</div><div style="background-color: transparent;">>>> for line in f:</div><div style="background-color: transparent;"><span class="yiv311588322Apple-tab-span" style="white-space: pre;">       </span>if line.startswith('>'):</div><div style="background-color: transparent;"><span class="yiv311588322Apple-tab-span" style="white-space: pre;">   
        </span>head = line[1:].strip()</div><div style="background-color: transparent;"><span class="yiv311588322Apple-tab-span" style="white-space: pre;">       </span>else:</div><div style="background-color: transparent;"><span class="yiv311588322Apple-tab-span" style="white-space: pre;">         </span>print head+'\t'+line</div><div style="background-color: transparent;"><br></div><div style="background-color: transparent;"><span class="yiv311588322Apple-tab-span" style="white-space: pre;">                </span></div><div style="background-color: transparent;">X1<span class="yiv311588322Apple-tab-span" style="white-space: pre;">    </span>A</div><div style="background-color: transparent;">                        <------</div><div style="background-color: transparent;">X1<span class="yiv311588322Apple-tab-span" style="white-space: pre;">     </span>G</div><div style="background-color: transparent;">       
                <-----</div><div style="background-color: transparent;">X2<span class="yiv311588322Apple-tab-span" style="white-space: pre;">        </span>A</div><div style="background-color: transparent;"><br></div><div style="background-color: transparent;">X2<span class="yiv311588322Apple-tab-span" style="white-space: pre;"> </span>G</div><div style="background-color: transparent;"><br></div><div style="background-color: transparent;">X3<span class="yiv311588322Apple-tab-span" style="white-space: pre;"> </span>A</div><div style="background-color: transparent;"><br></div><div style="background-color: transparent;">X3<span class="yiv311588322Apple-tab-span" style="white-space: pre;"> </span>G</div><div style="background-color: transparent;"><br></div><div style="background-color: transparent;">X4<span class="yiv311588322Apple-tab-span" style="white-space: pre;"> </span>A</div><div style="background-color:
 transparent;"><br></div><div style="background-color: transparent;">X4<span class="yiv311588322Apple-tab-span" style="white-space: pre;">        </span>A</div><div><br></div></span></div><div style="background-color: transparent;">Thanks</div><div style="background-color: transparent;">Hs.</div><div><br></div></span></div><div><br></div>  <div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"> <div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"> <div dir="ltr"> <font size="2" face="Arial"> <hr size="1">  <b><span style="font-weight:bold;">From:</span></b> Steven D'Aprano <steve@pearwood.info><br> <b><span style="font-weight: bold;">To:</span></b> tutor@python.org <br> <b><span style="font-weight: bold;">Sent:</span></b> Tuesday, February 5, 2013 4:28 PM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [Tutor] Getting range of a list<br> </font> </div> <br>
On 06/02/13 08:08, Hs Hs wrote:<br><br>> Here is what I do :<br>>>>> f1 = open('test','r')<br>>>>> da = f1.read().split('\n')<br>>>>> dat = da[:-1]<br>>>>> dat<br>>>>> mpos = []<br>> <br>>>>> for i in range(len(dat)):<br>> if dat[i].startswith('>'):<br>> mpos.append(i)<br>> <br>>>>> mpos<br>> [0, 3, 6, 9]<br>> <br>>>>> for item in range(len(mpos)):<br>> start = mpos[item]<br>> enda = item+1<br>> end  = mpos[enda]-1<br>> head = dat[start]<br>> block  = dat[start+1:end]<br>> for i in block:<br>> print head+'\t'+i<br><br><br>You are thinking like a C programmer, not a Python programmer. You should almost never need to iterate over a range of numbers like this.<br><br>Instead, try something like this:<br><br>f = open('test')<br>head = '----'<br>for line in f:<br>    if
 line.startswith('>'):<br>        head = line[1:].rstrip()  # remove trailing newline<br>    else:<br>        print head + '\t' + line<br><br>f.close()<br><br><br><br>In general, you should iterate over collections of data directly. For example:<br><br># WRONG<br>for i in range(len(data)):<br>    x = data[i]<br>    print x<br><br># RIGHT<br>for x in data:<br>    print x<br><br><br><br># WRONG<br>for i in range(len(data)):<br>    x = data[i]<br>    if x == 'spam':<br>        data[i] = 'ham'<br><br># RIGHT<br>for i, x in enumerate(data):<br>    if x == 'spam':<br>        data[i] = 'ham'<br><br><br><br>Hope this helps.<br><br><br><br>-- Steven<br>_______________________________________________<br>Tutor maillist  -  <a ymailto="mailto:Tutor@python.org"
 href="mailto:Tutor@python.org">Tutor@python.org</a><br>To unsubscribe or change subscription options:<br>http://mail.python.org/mailman/listinfo/tutor<br><br><br> </div> </div>  </div></body></html>