인터넷에서 정보를 가져 오는 스크립트가 있습니다. 긴 이야기를 짧게 줄이기 위해 문자열을 포함하는 변수가 있습니다. 이 문자열을 기반으로 나는 문자열에 관련하는 정보를 폐기 또는 추가 처리 여부를 결정하기 위해 스크립트를 프로그래밍 한 경우에 기반 :(Python) 문자열의 특정 용어를 필터링하는 가장 좋은 방법은 무엇입니까?
이- 내의 특정 순서로 특정 단어
- 또는 단어 몇있다 문자열.
나는이 알고리즘을 효율적으로 그리고 100 % 정확한 정확도로 달성하는 것이 무엇인지 알고 싶습니다.
현재 나는 다음과 같은 코드가 (대규모 단지 특정 부분을 포함 감소를, 일반적으로 등, 등,이 문제를 해결 루프가) :
#!/usr/bin/env python
import re
def findWord(z):
return re.compile(r'\b({0})\b'.format(z), flags=re.IGNORECASE).search
filterList = [
"term-1","term-2","term-n"
]
uncleanString = "This! is* a test [string],.}".lower()
#Remove all punctuation
for c in "[email protected]#%&*()[]{}/?<>,.'":
cleanString = uncleanString.replace(c, "")
#Check if the words in filterList are present, if not then process further
no = 0
for word in filterList:
result = findWord(filterList[filterList.index(word)])(cleanString)
if result == None:
pass
else:
no = 1
break
if no == 0:
#then do further processing here, e.g.
print(cleanString)
#reset condition (when implementing code in loop(s)
no = 0
내 실제 스크립트에서 내 filterList이 크다. 이것은 느린 스크립트이고 30 분 정도 소요됩니다. 비록 이것이 (RPi와 PyPy가 아닌) 플랫폼 (BS4/HTTPlib)과의 통신 및 MySQL 데이터베이스 ... 다른 섹션을 수정하기 전에이 부분을 빠르게 할 수있는 방법에 대한 아이디어가 있습니까? 아니면 위의 내용이 적절하다고 말할 수 있습니까?