Francesco Pietra, few notes: - In Python and C item numbering generally starts from 0, so you talk about column 0, 1, etc. - You can also use the Italian Python newsgroup if know Italian. - The number of lines with a particular number doesn't seem important to solve your problem. - You don't need to try to set non-proportional characters on usenet.
This is a first try at a solution, you can tell us if it's correct: data = """\ ATOM 3424 N LEU B 428 143.814 87.271 77.726 1.00115.20 2SG3426 ATOM 3425 CA LEU B 428 142.918 87.524 78.875 1.00115.20 2SG3427 ATOM 3426 CB LEU B 428 141.559 88.057 78.392 1.00115.20 2SG3428 ATOM 3427 CG LEU B 428 140.577 88.341 79.544 1.00115.20 2SG3429 ATOM 3428 CD1 LEU B 428 141.102 89.464 80.454 1.00115.20 2SG3430 ATOM 3429 CD2 LEU B 428 139.159 88.615 79.017 1.00115.20 2SG3431 ATOM 3430 C LEU B 428 142.680 86.253 79.615 1.00115.20 2SG3432 ATOM 3431 O LEU B 428 142.725 86.226 80.842 1.00115.20 2SG3433 ATOM 3432 N SER B 429 142.432 85.155 78.878 1.00134.86 2SG3434 ATOM 3433 CA SER B 429 142.175 83.908 79.534 1.00134.86 2SG3435 ATOM 3434 CB SER B 429 141.666 82.805 78.590 1.00134.86 2SG3436 ATOM 3435 OG SER B 429 140.392 83.155 78.069 1.00134.86 2SG3437 ATOM 3436 C SER B 429 143.451 83.432 80.141 1.00134.86 2SG3438 ATOM 3437 O SER B 429 144.543 83.756 79.676 1.00134.86 2SG3439""" lines = (line.split() for line in data.splitlines()) for parts in lines: if parts[4] == "B": parts[5] = str( int(parts[5]) - 427) parts[2] = parts[2].ljust(4) print " ".join(parts) It prints: ATOM 3424 N LEU B 1 143.814 87.271 77.726 1.00115.20 2SG3426 ATOM 3425 CA LEU B 1 142.918 87.524 78.875 1.00115.20 2SG3427 ATOM 3426 CB LEU B 1 141.559 88.057 78.392 1.00115.20 2SG3428 ATOM 3427 CG LEU B 1 140.577 88.341 79.544 1.00115.20 2SG3429 ATOM 3428 CD1 LEU B 1 141.102 89.464 80.454 1.00115.20 2SG3430 ATOM 3429 CD2 LEU B 1 139.159 88.615 79.017 1.00115.20 2SG3431 ATOM 3430 C LEU B 1 142.680 86.253 79.615 1.00115.20 2SG3432 ATOM 3431 O LEU B 1 142.725 86.226 80.842 1.00115.20 2SG3433 ATOM 3432 N SER B 2 142.432 85.155 78.878 1.00134.86 2SG3434 ATOM 3433 CA SER B 2 142.175 83.908 79.534 1.00134.86 2SG3435 ATOM 3434 CB SER B 2 141.666 82.805 78.590 1.00134.86 2SG3436 ATOM 3435 OG SER B 2 140.392 83.155 78.069 1.00134.86 2SG3437 ATOM 3436 C SER B 2 143.451 83.432 80.141 1.00134.86 2SG3438 ATOM 3437 O SER B 2 144.543 83.756 79.676 1.00134.86 2SG3439 Your data is probably in a file, so you have to change the first line of the code: lines = (line.split() for line in open("namefile.txt")) If your output file must to hard-coded columns (and generally those files don't need such property) then you have to make that code of mine more complex... Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list