2013-11-13 4 views
0

У меня есть 2 файла, как показано нижеЗамена слова в текстовом питона 2,7 file-

Branch данных:

open bus from 2311 to 3223 ck 1 
open bus from 4321 to 3783 ck 1 
. 
. 
. 

У меня есть около 100 филиалов, как этот

INFILE:

contingency 'b2_452' 
QQQQQQQQ 
open bus from 4321 to 3784 ck 1 
end 
. 
. 
. 

У меня около 200 непредвиденных расходов

Я пытаюсь получить результат, как показано ниже

освобожденные выходных файлов:

file1

contingency 'b2_452' 
open bus from 2311 to 3223 ck 1 
open bus from 4321 to 3784 ck 1 
end 

file2

contingency 'b2_452' 
open bus from 4321 to 3783 ck 1 
open bus from 4321 to 3784 ck 1 
end 

Вот мой код

infile = open('Contingency.txt').read() 
Brachdata = open('BranchData.txt', 'r') 
i = 0 
for branchline in Brachdata: 
    replace1 = branchline 
    i = i + 1 
    outputfile = open('file' + str(i) +'.txt', 'w') 
    for line in infile: 
     outputfile.write(line.replace('QQQQQQQQ', replace1)) 
outputfile.close() 

Я новичок в программировании на питоне и не знаю, где я ошибаюсь. Этот код создает две копии моего infile ... не заменяя QQQQQQQQ линией.

+2

Как в сторону: вы не должны придерживаться «линии» в ваших 'for' петель, вы можете просто имя это все, что вы хотите. Например, в первом for-loop вы можете сказать 'для ветви в Brachdata:'. –

+0

@DaanWilmer Спасибо .. поставил вопрос вот хороший опыт обучения :) – SaimaniKumar

+0

Я изменил 'infile = open ('IM Sub.txt'). Read()' to 'infile = open ('IM Sub.txt' , 'r') ', то он добавляет ветку в первый файл, но оставляет остальные файлы пустыми без данных. – SaimaniKumar

ответ

0

я понял, что проблема .. вот обновленный код

f2 = open('Contingency.txt', 'r') 
f1 = open('Contingency new.txt', 'w') 

for line in f2: 
    if 'QQQQQQQQ' in line: 
     f1.write(" @") 
    else: 
     f1.write(line) 
f1.close() 

Brachdata = open('BranchData.txt', 'r') 
infile = open('Contingency new.txt').read() 

i = 0 
for branchline in Brachdata: 
    replace1 = branchline 
    i = i + 1 
    outputFile = open('Contingency' + str(i) +'.txt', 'w') 
    for line in infile: 
     if '@' in line: 
      outputFile.write(replace1) 
     else: 
      outputFile.write(line) 
Brachdata.close() 
+0

' .read() 'в основном считывает по одному алфавиту за раз. Поэтому я заменил его специальным персонажем, и он отлично работает. – SaimaniKumar

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