2015-06-17 2 views
-4

Хорошо, поэтому мой вопрос предполагает использование языка PYTHON, пожалуйста, - ничего другого.Python - Поместите новую строку в файл с наибольшим отступом

В принципе, у меня есть файл с макетом, например, как показано ниже:

 X 
    Y 
Z 
     A 
    B 
C 
       1 
      2 
    3 

И я хотел бы посмотреть на это и сказать X, A and 1 mark a new step! (потому что их отступ больше, чем в предыдущей строке в основном). Поэтому я хочу добавить новую строку с текстом Step 1, Step 2 и т. Д. Для каждого нового шага.

Примечание: Мне больше не нужно ставить новую строку в нужное место, чем как увеличить значение N с каждым шагом.

Примечание 2: Файл будет отличаться в строке count, поэтому я не могу просто использовать строки 3, 6, 9 и т. Д. Это, к сожалению, бесполезно для меня.

+0

Post код, что вы пытались решить эту проблему. – DBedrenko

+0

Ах, должен был указать, что я довольно новичок в python, поэтому я попытался вставить текст '\ nStep 1 \ n' в строке X, которая работает (\ n дает мне «буфер строки» выше и ниже каждого Шаг, чтобы я мог лучше читать мои данные). Но помимо этого я не смог найти ничего, что мог бы сделать выше. –

ответ

0

Вы можете хотеть что-то вроде кода -

start = 1 
lines = ['Step' + str(start) + ':\n'] 
with open('file.txt','r') as inF: 
    prevspace = -1 
    for line in inF: 
     lspaces = len(line) - len(line.lstrip()) 
     if lspaces > prevspace and prevspace != -1: 
      lines.append('Step' + str(start+1) + ':\n') 
      start = start + 1 
      lines.append(line) 
      prevspace = lspaces 
     else: 
      lines.append(line) 
      prevspace = lspaces 
    ifF.close() 

with open('newfile.txt','w') as outF: 
    for line in lines: 
     outF.write(line) 
    outF.flush() 
    outF.close() 
+0

Awesome. Просто попробовал именно это, и он просто отлично работает! Я попытаюсь изменить его, чтобы он влиял только на линии между строкой 4 и строкой 3 снизу. Спасибо за помощь! Я бы дал вам взнос, но, видимо, мне не разрешили :( –

+0

Вы все же можете принять ответ, нажав на галочку слева от ответа, посоветуете вам сделать это по всем вашим вопросам, которые вы получили правильные ответы на. –

+0

Готово сейчас;) Приветствия (это очевидно, что я новичок на этом сайте? ха-ха). –

Смежные вопросы