Quiero escribir una cadena en un archivo pero quiero tener una longitud específica, por ejemplo, en el archivo de texto, quiero escribir “Atom”, quiero que tenga una longitud específica de la columna 1 – 6, y siguiente frase / palabra, de la columna 7-11, siguiente de 13-16, y etc … Me gustaría escribir en un archivo de texto, por ejemplo, random_text.txt, por favor ayuda.
¡Gracias!
Básicamente, por qué lo necesito:
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
En Python2.6 o posterior, puedes usar el método str.format :
with open('random_text.txt', 'w') as f: f.write('{0:6}{1:6}{2:4}'.format('Atom','word','next'))
random_text.txt
un archivo random_text.txt
con contenidos.
Atom word next
El número que sigue a los dos puntos indica el ancho. Por ejemplo, {0:6}
formatea el argumento 0-th, 'Atom'
, en una cadena con un ancho de 6. La cadena podría estar “justificada a la derecha” usando el formato {0:>6}
, y allí Son otras opciones también .
string = "atom" width = 6 field = "{0:<{1}}".format(string[:width], width)
Esto truncará la string
al width
si es necesario, ya que en realidad no puede especificar el ancho máximo en la cadena de formato, solo el ancho mínimo al que se rellenará el campo.
Utilice str.format , defina los anchos de campo ( :
) y expanda sus datos ( *
).
>>> columns = ['aaaa', 'bbbbbb', 'ccc'] >>> print '{:4}{:6}{:3}'.format(*columns)
Además, puede abusar de la precisión .8
para recortar un campo de cadena. Los primeros 8 establecen el ancho de campo mínimo.
>>> print '{:8.8}'.format('Too long for this field') Too long