Francesco Pietra wrote:
Hi:script now used: # Sample line # Slice indexes cut to the left of the corresponding item index # 1 2 3 4 5 6 # 012345678901234567890123456789012345678901234567890123456789012345 ... # ATOM 1 W W 1 0.690 35.960 33.300 1.00 0.00 data = open('out.2.5.2.5.2.0.pdb', 'r') outp = open('rect.out.2.5.2.5.2.0.pdb', 'w') for L in data: if L[19] == 'W': L = L[ : 17] + L[19] + L[18] + ' ' + L[20 : ] outp.write(L) france...@tya64:~/tmp$ python MRAB.py Traceback (most recent call last): File "MRAB.py", line 11, in <module> if L[19] == 'W': IndexError: string index out of range france...@tya64:~/tmp$ Unfortunately, in my hands gmail plaint text is like that. Actually, the second 'W' is 19.
The code is assuming that the lines are all at least 19 characters long; if a line is shorter then there's no position 19! Try checking the line length too: if len(L) >= 19 and L[19] == 'W': Alternatively: if L[19 : 20] == 'W': (If the line is too short then L[19 : 20] will return ''.) -- http://mail.python.org/mailman/listinfo/python-list
