Pude crear un archivo usando Python que tiene datos en el formato específico que se muestra a continuación. Empieza desde 00000 # donde # es 1 y llega hasta 100000. El mismo número está presente en cada línea antes y después del texto My Team.

#output file
000001 My Team 000001
000002 My Team 000002
...all the way to
100000 My Team 100000

No estoy seguro de cómo hacer esta creación de formato en Python. Sé que es algo simple, pero estoy un poco perdido sobre cómo proceder. Soy muy nuevo en Python y agradecería si alguien me pudiera dar alguna orientación sobre esto.

Gracias a todos.

0
Anna 22 ene. 2021 a las 20:49

4 respuestas

La mejor respuesta

Puede probar f-strings agregado en Python 3.6:

PADDING = 6

with open('test.txt', 'w') as fh:
    for i in range(1, 100001):
        print(f'{i:0{PADDING}d} My Team {i:0{PADDING}d}', file=fh)

Salida:

000001 My Team 000001
000002 My Team 000002
...
100000 My Team 100000

Otro método sería utilizar str.zfill ( zfill está parado desde cero):

>>> i = 1
>>> f'{str(i).zfill(PADDING)} My Team {str(i).zfill(PADDING)}'
000001 My Team 000001
1
Sayandip Dutta 22 ene. 2021 a las 18:29

Si busca asegurarse de que un número siempre tenga seis dígitos, puede hacerlo con algo como esto

def leadingZeros(num, length):
    out_str = str(num);
    while len(out_str) < length:
        out_str = "0" + out_str;
    return out_str;
1
Ian Chu 22 ene. 2021 a las 17:52

Puede usar formato de cadena para lograr esto

output_string = ''.join([f'{i:06d} My Team {i:06d}\n'for i in range(1, 100001)])

Alternativamente usando zfill

output_string = ''.join([f'{str(i).zfill(6)} My Team {str(i).zfill(6)}\n'for i in range(1, 100001)])
1
Epsi95 22 ene. 2021 a las 17:58

Si desea imprimir el contenido del archivo que ya está en ese formato,

with open('file.txt','r') as f:
      file_data=f.read()
      l=file_data.split("\n")
      print(*l)

Si desea crear un archivo como ese, puede usarlo, coloque el archivo en el mismo directorio en el que está su código

with open('test.txt','w') as myfile:
for i in range(1,100001):
    print("{:0>6d} My team {:0>6d}".format(i,i),file=myfile)
0
ZenSaiRohit360 22 ene. 2021 a las 18:14
65850257