반응형
문자열에서 Python 와일드 카드 검색
내가 목록이 있다고합시다
list = ['this','is','just','a','test']
사용자가 와일드 카드 검색을 수행하도록하려면 어떻게해야합니까?
검색어 : 'th_s'
'this'를 반환 할 것입니다.
정규식은 아마도이 문제에 대한 가장 쉬운 해결책 일 것입니다.
import re
regex = re.compile('th.s')
l = ['this', 'is', 'just', 'a', 'test']
matches = [string for string in l if re.match(regex, string)]
사용 fnmatch
:
import fnmatch
lst = ['this','is','just','a','test']
filtered = fnmatch.filter(lst, 'th?s')
허용 할 경우 _
, 와일드 카드로 바로 대체 모든 밑줄 '?'
또는 (한 문자) *
(여러 문자).
사용자가 더 강력한 필터링 옵션을 사용하도록하려면 정규 표현식 을 사용하도록 허용하는 것이 좋습니다 .
fnmatch 모듈을 사용해 볼 수 있습니다 . 쉘과 같은 와일드 카드 구문이 있습니다.
또는 정규 표현식을 사용할 수 있습니다.
다시 가져 오기
와일드 카드에 대한 특정 구문을 의미합니까? 일반적으로 *
"하나 또는 여러"문자를 ?
나타내며 하나를 나타냅니다.
가장 간단한 방법은 와일드 카드 식을 정규식으로 변환 한 다음 결과를 필터링하는 데 사용하는 것입니다.
정규 표현식을 사용하는 Yuushi와 같은 아이디어이지만 이것은 목록 이해 대신 re 라이브러리 내의 findall 메소드를 사용합니다.
import re
regex = re.compile('th.s')
l = ['this', 'is', 'just', 'a', 'test']
matches = re.findall(regex, string)
쉬운 방법은 시도입니다 os.system
.
import os
text = 'this is text'
os.system("echo %s | grep 't*'" % text)
참고 URL : https://stackoverflow.com/questions/11427138/python-wildcard-search-in-string
반응형
'developer tip' 카테고리의 다른 글
Microsoft Visual Studio 2012 오류 : 제약 조건과 일치하는 내보내기를 찾을 수 없습니다. (0) | 2020.12.06 |
---|---|
외부에서 볼 수 있도록 bash 쉘 스크립트 내부에 별명을 설정하는 방법은 무엇입니까? (0) | 2020.12.06 |
Integer 래퍼 클래스를 사용하여 생성되는 개체는 몇 개입니까? (0) | 2020.12.06 |
Powershell에서 로그 파일 만들기 (0) | 2020.12.06 |
Android : java.lang.ClassCastException : android.widget.imageView를 android.widget.textView로 캐스트 할 수 없습니다. (0) | 2020.12.06 |