나는 한 세트의 키워드를 검색해야하는 수많은 PDF 파일을 가지고있다. 키워드가있는 정확한 행을 추출해야합니다. 먼저 xpdf의 pdf2text를 사용하여 파일을 PDF로 변환했습니다. (시도했지만 solr하지만 내 요구 사항에 맞게 출력/스키마를 조정하는 힘든 시간을 보냈습니다).줄 바꿈을 제거하여 파이썬에서 문자열을 검색하지만 문자열이 발견 된 정확한 줄을 반환하는 방법은 무엇입니까?
import sys
file_name = sys.argv[1]
searched_string = sys.argv[2]
result = [(line_number+1, line) for line_number, line in enumerate(open(file_name)) if searched_string.lower() in line.lower()]
#print result
for each in result:
print each[0], each[1]
ThinkCode : ~ $ 파이썬 find_string.py하시면 sample.txt "문자열 추출"
나는이 함께이 문제입니다 검색 문자열의 끝으로 깨진 경우에 줄 :
큰 이진 파일을 인덱싱하려면 크기 제한을 변경해야합니다. 문자열
추출 제가 위에서 제시 한 코드를 사용하는 경우
내가 '문자열 추출'을 검색하고 있다면,이 키워드를 그리워하는 일반적인 문제입니다. 텍스트 파일의 사본 2 개 (줄을 추출하기 위해 키워드를 검색하기위한 것이고 줄 바꿈을 제거하고 키워드가 2를 가로 지르는 경우를 제거하기위한 키워드를 찾는 것에 대한 것)없이 이것을 달성하는 가장 효율적인 방법은 무엇입니까? 윤곽).
많은 감사를드립니다!
좋아요! github 기여에 감사드립니다. 유일한 문제는 대소 문자를 구분하므로 같은 줄에 여러 키워드 인과 일치하는 키워드가있는 경우 두 번째 키워드는 다음 2 ~ 3 줄에 몇 가지 이유로 발견됩니다! 디버깅을 통해 내가 찾은 것을 알려줍니다! – ThinkCode
새 개정판은 대소 문자를 구별하지 않습니다. 발견 한 버그와 관련하여 첫 번째 키워드와 일치하는 항목이 발견되면 반복기가 진행되고 연속 키워드 중 하나가 일치하지 않으면 현재 위치에서 검색이 계속됩니다 첫 번째 경기 이후 다음 단어가 아닙니다. – GaretJax
사실, 각 키워드에 대한 텍스트를 추출하고 있으므로 여러 인스턴스가 문제가되지 않습니다! 대소 문자를 구별하기 위해 새 반복을 확인해야합니다. 유일한 다른 문제는 특수 기호입니다. 검색 문자열에 '(Search String'또는 'String')과 같은 기호가 있으면 'Search String'또는 'String'과 일치하지 않습니다. 그들을 정규식에서 떼어 내시겠습니까? 시간 내 주셔서 감사합니다. – ThinkCode