pampy 강력 한 패턴 일치 도구 구현
패턴 매 칭 은 특정한 패턴 을 지정 하 는 것 입 니 다.이 모드 로 시퀀스 나 문자열 이 이러한 모델 에 부합 되 는 지 확인 합 니 다.이 기술 은 자연 언어 처리 에서 자주 사용 합 니 다.
다운로드
pip install pampy
밤.단일 문자 일치
다음 코드 는 개체 에 있 는 단일 문자 의 매 칭 을 완성 할 수 있 습 니 다.사용일치 하 는 결 과 를 나타 낸다.
from pampy import _,match
a=['a',1,'b',2,'c',3,'d',4]
patter = ['a',1,'b',2,'c',3,'d',_]
action=lambda x: f'result is: {x}'
print(match(a,patter,action))
실행 결과:>>> python test.py
>>> result is: 4
시작 과 끝 이 일치 합 니 다.
시작 이나 끝 이 연속 되 는 대상 에 대해 우 리 는 이런 방식 으로 빠 른 매 칭 을 실현 할 수 있다.
from pampy import _,match,HEAD,TAIL
a=['a',1,'b',2,'c',3,'d',4]
patter = [HEAD,_,'b',2,'c',3,TAIL]
action=lambda h,b,t: ({'head':h,'body':b,'tail':t})
print(match(a,patter,action))
실행 결과:>>> python test.py
>>> {'head': 'a', 'body': 1, 'tail': ['d', 4]}
이상,우 리 는 HEAD 를 사용 하여 시작 에 있 는 몇 글자 와 일치 하고 중간 에 을 사용 합 니 다.어떤 숫자 와 일치 합 니 다.마지막 으로 우 리 는 TAIL 을 사용 하여 몇 개의 문 자 를 맞 추 었 습 니 다.
사전 과 일치 하 는 key
우 리 는 특정한 사전 의 일부 내용 만 알 고 있 지만 특정한 value 의 key 를 얻 으 려 고 할 때 이런 방식 으로 적은 노력 으로 큰 효 과 를 거 둘 수 있다.
from pampy import _,match,HEAD,TAIL
my_dic={
'phone':{'huawei':'ok','iphone':'good','chuizi':'bad'},
'language':{
'chinese':['xian','beijing'],
'english':['usa','canada']
}
}
patter = {_:{_:'ok'}}
action=lambda a,b: {'key1':a,'key2':b}
print(match(my_dic,patter,action))
실행 결과:>>> python test.py
>>> {'key1': 'phone', 'key2': 'huawei'}
위 와 같이 우 리 는 사전 의 1 층 과 2 층 의 Key 값 에 일치 합 니 다.
위의 예 와 같이 우리 의 모델 은 반드시 사전 구조의 완전 함 을 유지 해 야 한다.
쓰다
특성 1:HEAD 와 TAIL
HEAD 와 TAIL 은 어떤 패턴 의 앞부분 이나 뒷부분 을 대표 할 수 있다.
예 를 들 어 특정한 모드 후의 요 소 를 모두 원 그룹 으로 바 꾸 는 것 이다.
from pampy import match, HEAD, TAIL, _
x = [-1, -2, -3, 0, 1, 2, 3]
print(match(x, [-1, TAIL], lambda t: [-1, tuple(t)]))
# => [-1, (-2, -3, 0, 1, 2, 3)]
, :
from pampy import match, HEAD, TAIL, _
x = [-1, -2, -3, 0, 1, 2, 3]
print(match(x, [HEAD, _, _, 0, TAIL], lambda h, a, b, t: (set([h, a, b]), tuple(t))))
# => ({-3, -1, -2}, (1, 2, 3))
특성 2:사전 의 키 와 일치 할 수 있 습 니 다.어느 키 아래 에 어떤 값 이 있 는 지 모 를 때 이 방법 은 매우 쓰기 좋다.
from pampy import match, HEAD, TAIL, _
my_dict = {
'global_setting': [1, 3, 3],
'user_setting': {
'face': ['beautiful', 'ugly'],
'mind': ['smart', 'stupid']
}
}
result = match(my_dict, { _: {'face': _}}, lambda key, son_value: (key, son_value))
print(result)
# => ('user_setting', ['beautiful', 'ugly'])
특성 3:배합 정규뿐만 아니 라 정규 와 함께 사용 할 수 있 습 니 다.
import re
from pampy import match, HEAD, TAIL, _
def what_is(pet):
return match(pet,
re.compile('(\\w+),(\\w)\\w+ $'), lambda mygod, you: you + " ",
)
print(what_is(' , ')) # => ' '
이 쯤 에서 pampy 의 강력 한 패턴 매 칭 도구 의 실현 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 pampy 모드 매 칭 도구 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!