Итерирование списка вместе с чтением файла

import os import sys import textwrap string123="00505661e418005056618f67080045000086000040004011c1bd1e1e1e321e1e1e3cc0e62118007200000800000000000100000c298a92ba000c29f914ea080045000054c757400040015a93464646144646461e080031e3470d000142bdaf5600000000cb27030000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637" j=0 i = 0 string1234 = '' while i < len(string123): #print string123[i:i+2] string1234 = string1234+' '+string123[i:i+2] i+=2 final = string1234.strip() final1= '\n'.join(textwrap.wrap(final, 47)) print final f=open("final.txt","w") f.write(final1) f.close f=open("final.txt","r") g=f.readlines() my_list=["000","001","002","003","004","005","007","008","009"] line_new="" for lines in g: while j < len(my_list): line_new = my_list[j]+" "+ lines print line_new lines+=1 j+=1 

Этот скрипт фактически пробегает два символа вместе в «S» и добавляет пробел. Затем он вводит новую строку для каждых 47 символов и копирует вывод в final.txt .

final.txt выглядит так:

 00 50 56 61 e4 18 00 50 56 61 8f 67 08 00 45 00 00 86 00 00 40 00 40 11 c1 bd 1e 1e 1e 32 1e 1e 1e 3c c0 e6 21 18 00 72 00 00 08 00 00 00 00 00 01 00 00 0c 29 8a 92 ba 00 0c 29 f9 14 ea 08 00 45 00 00 54 c7 57 40 00 40 01 5a 93 46 46 46 14 46 46 46 1e 08 00 31 e3 47 0d 00 01 42 bd af 56 00 00 00 00 cb 27 03 00 00 00 00 00 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 

Я хотел доложить 000 до первой строки, затем 001 до второй строки и от 003 до третьей строки и так далее.

Поэтому я создал список с этими значениями, и я пытаюсь выполнить итерацию строк вместе с элементами списка.

 my_list=["000","001","002","003","004","005","007","008","009"] line_new="" for lines in g: while j < len(my_list): line_new = my_list[j]+" "+ lines print line_new lines+=1 j+=1 

Но он добавляет все элементы в список в первую строку. Первый элемент списка должен быть добавлен к началу первой строки, а значит, второй, третий и т. Д.

Читать с final.txt

 from __future__ import print_function with open("final.txt") as f: for index, line in enumerate(f): print('{:03d} {}'.format(index, line), end='') 

Вывод:

 000 00 50 56 61 e4 18 00 50 56 61 8f 67 08 00 45 00 001 00 86 00 00 40 00 40 11 c1 bd 1e 1e 1e 32 1e 1e 002 1e 3c c0 e6 21 18 00 72 00 00 08 00 00 00 00 00 003 01 00 00 0c 29 8a 92 ba 00 0c 29 f9 14 ea 08 00 004 45 00 00 54 c7 57 40 00 40 01 5a 93 46 46 46 14 005 46 46 46 1e 08 00 31 e3 47 0d 00 01 42 bd af 56 006 00 00 00 00 cb 27 03 00 00 00 00 00 10 11 12 13 007 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 008 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 009 34 35 36 37 

Напишите на final.txt в первую очередь

Предполагая, что вы хотите добавить числа в файл, вы можете сделать это:

 final = string1234.strip() with open("final.txt","w") as f: for index, line in enumerate(textwrap.wrap(final, 47)): f.write('{:03d} {}\n'.format(index, line)) 

final.txt :

 000 00 50 56 61 e4 18 00 50 56 61 8f 67 08 00 45 00 001 00 86 00 00 40 00 40 11 c1 bd 1e 1e 1e 32 1e 1e 002 1e 3c c0 e6 21 18 00 72 00 00 08 00 00 00 00 00 003 01 00 00 0c 29 8a 92 ba 00 0c 29 f9 14 ea 08 00 004 45 00 00 54 c7 57 40 00 40 01 5a 93 46 46 46 14 005 46 46 46 1e 08 00 31 e3 47 0d 00 01 42 bd af 56 006 00 00 00 00 cb 27 03 00 00 00 00 00 10 11 12 13 007 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 008 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 009 34 35 36 37 

enumerate() дает вам индекс для вашей итерации, начиная с нуля. Метод format() форматирует выходную строку. {:03d} вставляет целое число с ведущими нулями, занимающими три места. Следующий {}\n берет текст строки и добавляет символ новой строки в конце.

Если вы ищете способ добавить номера строк в существующие строки, которые вы прочитали из файла, это один из способов сделать это:

 f = open("final.txt","r") g = f.readlines() print("before:") print(g) print("") g1 = [format(i, "03d") + " " + g[i] for i in range(len(g))] print("after:") print(g1) того, как f = open("final.txt","r") g = f.readlines() print("before:") print(g) print("") g1 = [format(i, "03d") + " " + g[i] for i in range(len(g))] print("after:") print(g1) 

который производит

 before: ['line1\n', 'line2\n', 'line3\n'] after: ['000 line1\n', '001 line2\n', '002 line3\n']