2015-07-22 3 views
-4

Я пишу скрипт, где мне нужно вставить строку между двумя строками. Например:Запись строки между строками

<tag1> 
    <subtag1>  
      Line 1 - with some text 
      Line 2 - with some text 
    </subtag> - #closing of subtag 

**--> here i have (between closure of subtag and tag1) to insert a new tag (3 lines, opening tag, body and closing tag)** 

</tag1> 

Я пытаюсь использовать нижеприведенный код, но я ничего не могу записать в файле.

with open ('abc.xml' , "r+") as f: 
    for line in f: 
     if '</subtag>' in line: 
      f.write('\n text1\n') 
      f.write('text2') 
      f.write('text3') 

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

+1

Самый простой способ сделать это - прочитать весь контент файла (например, как список строк), * манипулировать им в памяти *, а затем записать его обратно * поверх * предыдущего файла. Вставка в середину существующих файлов на месте нецелесообразна. – jonrsharpe

+0

Привет, спасибо jonrsharpe за ваш вклад! , Он работал после манипулирования файлом в памяти и затем переписывал его на существующий файл. – nisha9t

ответ

0

По jonrsharpe «ы комментарий, наиболее легко понять подход, чтобы прочитать весь файл, а затем вставить строки, в которых вы нуждаетесь в них:

# Let's read our input file into a variable 
with open('input.html', 'r') as f: 
    in_file = f.readlines() # in_file is now a list of lines 

# Now we start building our output 
out_file = [] 
for line in in_file: 
    out_file.append(line) # copy each line, one by one 
    if '</subtag>' in line: # add a new entry, after a match 
     out_file.append(' <some new tag>text1</some new tag>\n') 

# Now let's write all those lines to a new output file. 
# You would re-write over the input file now, if you wanted! 
with open('out.html', 'w') as f: 
    f.writelines(out_file) 

Я начал с этим файлом:

<tag1> 
    <subtag1> 
     Line 1 - with some text 
     Line 2 - with some text 
    </subtag> 
</tag1> 

Конец мой сценарий произвел это:

<tag1> 
    <subtag1> 
     Line 1 - with some text 
     Line 2 - with some text 
    </subtag> 
    <some new tag>text1</some new tag> 
</tag1> 

Надеюсь, это поможет!

+0

эй .. спасибо Symmitchy за ваш вклад !. Ваш код работал нормально, и теперь я могу редактировать файл по мере необходимости. Еще раз спасибо! – nisha9t

+0

Рад, что это сработало. Убедитесь, что когда вы отправляете вопрос, который вы помните, чтобы «принять» ответ, который сработал для вас, чтобы помочь другим понять, как вы решили свою проблему (и дайте мне эти драгоценные моменты!) – Symmitchry

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