2016-12-15 3 views
0

У меня есть файл, который содержит предложения:Найти следующее слово и заменить в файле

File1.txt: 
"I like Banana" 

Я хочу найти слово появляется после того, как «как» и заменить его. Я пытался шпагатом и работает отлично

String = "orange" 
Text = 'I like Banana' 
list_of_words = Text.split() 
for u, word in enumerate(list_of_words): 
    if 'like ' == word: 
     next_word= list_of_words[u+ 1] 
     Text = Text.replace(next_word,String) 
print(Text) 

печатает: I like orange

Но когда я применяю его в файле он только заменить (как):

with open(file, 'r') as open_file: 
    read_file = open_file.readlines() 
    output_lines = [] 

for line in read_file: 
    words = line.split() 
    output_line = [] 
    for u,word in enumerate(words): 
     if 'like' == word: 
      new_word = words[u + 1] 
      word = word.replace(new_word,"Orange") 
      output_line.append(word) 
#-------------------------------------------------------- 

    output_lines.append(' '.join(output_line)) 
    with open(file, 'w') as open_file: 
     open_file.write(' '.join(output_lines)) 

Он заменяет Как и оранжевый:

I Orange Banana 

Любая идея, почему? !!!!

ответ

1

В вашем условии if вы вводите слово в замешательство. Вы заменяете это на «like», а не ['I', 'like', 'bananas']. Так как не содержит «апельсинов», эта строка не является операцией.

Я думаю, вы хотите что-то более подобное. Хотя это все еще нужно проверять границы (что, если u + 1 вне диапазона?).

output_line = [] 
for line in read_file: 
    words = line.split() 
    for u,word in enumerate(words): 
     if 'like' == word: 
      words[u + 1] = 'Orange' 
    output_line.append(' '.join(words)) 

Удачи вам!

1

Попробуйте это:

file = 'File1.txt' 
with open(file, 'r') as open_file: 
    read_file = open_file.readlines() 
    output_lines = []   

for line in read_file: 
    words = line.split() 
    for u, word in enumerate(words): 
     if 'like' == word: 
      words[u + 1] = 'Orange' 
#-------------------------------------------------------- 

    output_lines.append(' '.join(words)) 
    with open(file, 'w') as open_file: 
     open_file.write(' '.join(words)) 

я удалил некоторые ненужные списки.

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