2014-03-02 7 views
1

목표는 두 개의 정렬 된 텍스트 문서에서 일치하는 문자열을 식별 한 다음 각 문서에서 일치하는 문자열의 시작 문자 위치를 찾는 것입니다.파이썬을 사용하여 텍스트에서 문자 오프셋을 찾는 방법

doc1=['the boy is sleeping', 'in the class', 'not at home'] 
doc2=['the girl is reading', 'in the class', 'a serious student'] 

내 시도 : 문제는 이제 DOC1 및 doc2에 일치하는 문자열의 문자 오프셋을 찾는

# find matching string(s) that exist in both document list: 
matchstring=[x for x in doc1 if x in doc2] 
Output=matchstring='in the class' 

'

(제외 문장 부호 포함 공백).

이상적인 결과 : 텍스트 정렬에

Position of starting character for matching string in doc1=20 
Position of starting character for matching string in doc2=20 

어떤 아이디어? 감사.

+0

왜 21 대신에 19가 나옵니까? – zhangxaochen

+0

안녕하세요 @ zhangxaochen, 당신은 문자 'I'in 'the class'에서 멈추지 않고 'sleeping'에서 'g'문자를 세기 시작했습니다. – Tiger1

+0

'소년은 자고있다'는 길이가 19이고 'i'가 0에서 색인이 생성되면 19 번째 위치에있는 20 번째 문자입니다. – zhangxaochen

답변

1

헤이 사람이 시도 :

doc1=['the boy is sleeping', 'in the class', 'not at home'] 
doc2=['the girl is reading', 'in the class', 'a serious student'] 

temp=''.join(list(set(doc1) & set(doc2))) 
resultDoc1 = ''.join(doc1).find(temp) 
resultDoc2 = ''.join(doc2).find(temp) 

print "Position of starting character for matching string in doc1=%d" % (resultDoc1 + 1) 
print "Position of starting character for matching string in doc2=%d" % (resultDoc2 + 1) 

그것은 당신의 기대대로 완벽하게 작동!

+0

알 Mamun, 솔루션 주셔서 감사합니다. 당신이 말했듯이 그것은 완벽하게 작동했습니다. – Tiger1

+0

답변을 수락하고 투표하십시오. :) –

+0

@Al Mamum, 저는 여전히 2 코드 라인의 답변을 얻길 희망합니다. 실제 의사의 – Tiger1

관련 문제