hihey hihey - 3 months ago 7
Python Question

Python- Adding a specified width to strings

I want to write a string to a file but I want to have a specified length, for example, in the text file, I want to write "Atom", I want it to have a specified length from column 1 - 6, and the next phrase/word, from column 7-11, next from 13-16, and etc... I would want to write to a text file say, random_text.txt, please help.

Thanks!

Basically, why I need it:

Column 1-6 Record Name
Column 7-11 Serial Number
Column 13-16 ATOM name/Type
Column 17 Alternate Location Indicator
Column 18-20 Residue Name
Column 22 Chainidentifier
Column 23-26 Residue sequence number
Column 27 Code for insertion fo residues
Column 31-38 X-value
Column 39-46 Y-value
Column 47-54 Z-Value
Column 55-60 Occupency
Column 61-66 Temperature (Default 0.0)
Column 73-76 Segment identifier
Column 77-78 Element Symbol
Column 79-80 Charge on atom

Answer

In Python2.6 or later, you could use the str.format method:

with open('random_text.txt', 'w') as f:
    f.write('{0:6}{1:6}{2:4}'.format('Atom','word','next'))

yields a file random_text.txt with contents

Atom  word  next

The number following the colon indicate the width. For example, {0:6} formats the 0-th argument, 'Atom', into a string with a width of 6. The string could be "right-justified" by using the format {0:>6}, and there are other options as well.