2016-01-27 3 views
-3

У меня есть два текстовых документа, которые содержат по существу все те же слова, но есть несколько исключений. Как найти слова в документе2, которые нигде не указаны в документе1, и распечатать их? Например:Как найти слова, которые не совпадают между двумя текстовыми файлами

документ1: "Привет, как ты"

документ2: "Привет, как ты сегодня Джон"

Желаемый результат: "Привет сегодня Джон"

Редактировать : Я хотел бы печатать слова, которые присутствуют только в документе2 и не найдены нигде в документе1. Я не хочу печатать одинаковые слова между ними.

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

doc1 = open("K:\System Files\Desktop\document1.txt", "r+") 
doc2 = open("K:\System Files\Desktop\document2.txt", "r+") 

list1 = [] 
list2 = [] 

for i in doc1: #Removes the new line after each word 
    i = i[:-1] 
    list1.append(i) 
for i in doc2: 
    i = i[:-1] 
    list2.append(i) 

for i in list1: 
    for j in list2: 
     if i == j: 
      print(i) 
+1

Возможный дубликат [Сравнить два разных файла по строкам в python] (http://stackoverflow.com/questions/19007383/compare-two-different-files-line-by-line-in-python) – ishaan

+0

Документ 1 имеет 138 слов, а в документе 2 - 187 - каждое слово находится на новой строке, потому что это список. Я новичок в программировании в целом, поэтому я не очень далеко, но я думаю, что смог создать код, который печатает слова, которые соответствуют между двумя файлами (я отредактирую свой оригинальный пост, чтобы вы его увидели) , Теперь я хотел бы найти способ распечатать слова, которые существуют только в документе2 и нигде в документе1. – charliechip95

+0

Я предлагаю вам добавить префикс 'r' к вашим двум путям, например. 'r" K: \ System .... txt "', чтобы избежать проблем с вашими обратными косыми чертами. –

ответ

2

Если вы не беспокоитесь о порядке слов, то вы можете использовать наборы для достижения этой цели следующим образом:

import re 

def get_words(filename): 
    with open(filename, 'r') as f_input: 
     return set(w.lower() for w in re.findall(r'(\w+)', f_input.read())) 

words1 = get_words('document1.txt') 
words2 = get_words('document2.txt') 

print words2 - words1 

Это выведет:

set(['john', 'hi', 'today']) 

Использование - на двух наборах дает вам difference между двумя наборами.

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