사용자 입력 와일드 카드를 사용하여 사전에서 파이썬으로 검색 할 수 있기를 원합니다.Python : 사용자 입력 와일드 카드를 사용한 정규 표현식
이걸 발견 :
import fnmatch
lst = ['this','is','just','a','test', 'thing']
filtered = fnmatch.filter(lst, 'th*')
이이와 일을 일치합니다. 이제 전체 파일을 입력하여 검색하려고 시도하면
with open('testfilefolder/wssnt10.txt') as f:
file_contents = f.read().lower()
filtered = fnmatch.filter(file_contents, 'th*')
과 일치하지 않습니다. 차이점은 내가 읽는 파일에서 텍스트 파일 (셰익스피어 플레이)이므로 공백이있어 목록이 아니라는 점입니다. 나는 하나의 편지와 같은 것을 매치 할 수있다. 그래서 나는 단지 't'가 있다면 나는 많은 것을 얻는다. 따라서 이것은 하나의 글자를 매치시키고 있음을 말해줍니다 - 그러나 나는 전체 단어를 매치시키고 싶습니다 - 그러나 더 많은 것은 와일드 카드 구조를 보존하기 위해서입니다.
내가 원했던 것은 사용자가 텍스트 (와일드 카드 문자 포함)를 입력하면 'th *'가있는 위치로 대체 할 수 있다는 것입니다. 와일드 카드는 여전히해야 할 일을 할 것입니다. 그 질문에, 나는 단지 'th *'에 대한 검색 텍스트를 담고있는 변수를 사용할 수 있습니까? 이것은 일에 대해 갈 수있는 올바른 방법을 th.*\Z(?ms)
를 출력
regex = fnmatch.translate('th*')
print(regex)
: 나는 어떻게 든 예를 들어 '번째 *'를 번역 하죠과 같은 무언가를 발견 한 경우 일부 조사 후 궁금 이? 그것이 필요한지 나는 모른다.
"정규식 수식 전달"에 대한 가장 좋은 방법은 무엇이며 코드의 두 번째 세트에서 들어오는 텍스트 문자열에서 작동하지 않으므로 코드에서 내가 잘못 생각한 것일 수도 있습니다. 그것이 첫 번째에서 (정확하게) 그렇듯이.
왜 ['re'] (http://docs.python.org/library/re.html)를 사용하지 않으시겠습니까? – n1xx1