2016-10-29 9 views
0

파이썬을 사용하여 텍스트 파일에 삽입되는 새 단어를 찾고 싶습니다. 예를 들어 :텍스트 파일에 새로 삽입 된 단어 찾기

Old: He is a new employee here. 
New: He was a new, employee there. 

나는 출력으로 단어의 목록을 원하는 :

['was', ',' ,'there'] 내가 difflib 사용을하지만 나에게 '+', '-' and '?'을 사용하여 나쁜 포맷 방식은 diff를 제공합니다. 나는 새로운 단어를 찾기 위해 결과물을 파싱해야 할 것이다. 이 일을 파이썬에서 할 수있는 쉬운 방법이 있습니까?

답변

0

re 모듈을 사용하면이 작업을 수행 할 수 있습니다. 당신은 강타 또는 세미콜론으로 다른 문장 부호를 추가하려는 경우, 당신은 정규 표현식 정의에 추가해야

import re 

# create a regular expression object 
regex = re.compile(r'(?:\b\w{1,}\b)|,') 

# the inputs 
old = "He is a new employee here." 
new = "He was a new, employee there." 

# creating lists of the words (or commas) in each sentence 
old_words = re.findall(regex, old) 
new_words = re.findall(regex, new) 

# generate a list of words from new_words if it isn't in the old words 
# also checking for words that previously existed but are then added 
word_differences = [] 
for word in new_words: 
    if word in old_words: 
     old_words.remove(word) 
    else: 
     word_differences.append(word) 

# print it out to verify 
print word_differences 

참고. 지금은 단어 나 쉼표 만 확인합니다.

+1

그러나 이전 텍스트에 "there"라는 단어가 다른 곳에 있으면이 단어를 반환하겠습니까? – Hellboy

+0

아, 네 말이 맞아. 아이디어는 동일하지만 퇴행성 증상에 대한 간단한 수정이 있습니다. 수용하도록 편집하겠습니다. –

0

Google Diff-Patch-Match를 사용했습니다. 그것은 잘 작동합니다.