2016-12-15 68 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條件中,你將單詞與單詞混淆。你取代'喜歡',而不是['我','喜歡','香蕉']。由於不包含「橙子」,因此該線是無操作的。

我想你想要更像這樣的東西。雖然這仍然需要檢查邊界(如果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)) 

我去掉了一些不必要的名單。

相關問題