2016-12-22 2 views
-2

현재 Python을 배우고 있으며 온라인에서 찾은 코드를 해독하려고합니다. 코드의 요점은 원시 문자열을 사용자 입력 키와 비교하는 것이며 일치하는 경우 원시 문자열을 반환합니다.이 코드의 Python re.findall() 목적

나는 문제를이 코드에서 무엇을하고 있는지 re.findall()을하지 이해하려고 노력하는 데 문제

그래서 머리 [0] 데이터 문자열을 포함

('가 2016년 12월 22일 6시 28분 36초 'u'Kith는 새로운 시대의 K 59FIFTY 캡 X - 핑크', 을 U 'http://kithnyc.com/products/kith-x-new-era-59fifty-cap-pink')

키 원시 문자열을 포함

키 = r'Nike | 나의 이해에서

head = self.data 
for k in key: 
    print k 
    flag=re.findall(k,str(head[0]),flags=re.I) 
    print len(flag) 
    if len(flag)>4: 
     print head[0] 

'울트라 코드의 목적이 키를 통해 루프이며, 그것의 머리를 일치하는지 확인 [0]. 일치하는 경우 head [0]을 반환합니다. 그러나, 여전히 반환, 머리 [0]

('2016년 12월 22일 6시 28분 36초', u'Kith은 새로운 시대의 K 59FIFTY 캡 X - 핑크 ', 을 U'http://kithnyc.com/products/kith-x-new-era-59fifty-cap-pink ')

비록 일치하지 않더라도.

+0

위의 스 니펫에는'return' 문이없는 것 같습니다. – ZdaR

+0

미안하지만 나는 그것을 포함하지 않았다. 나는 그것을 시험하고 있었고 대신에 인쇄 된 '보낸'. 지금 코드를 편집했습니다 – b0baboi

+1

내가 필요한 것을 이해하지 못한다고 생각합니다. 아마도'head'에서'key' 정규식과 일치하는 아이템을 반환하거나 프린트하고 싶을 수도 있습니다. –

답변

0

키 정규식과 일치하는 항목을 머리에 인쇄한다고 가정합니다.

사용을 다음 following code :

import re 
head = ('2016-12-22 06:28:36', 'nike item', 'ultra item', 'Kith x New Era K 59FIFTY Cap - Pink', 'http://kithnyc.com/products/kith-x-new-era-59fifty-cap-pink') 
key=r'Nike|Ultra' # This is a regex pattern, matches `Nike` or `Ultra` 
for s in head:  # Iterate the items in head 
    if re.search(key, s, flags=re.I): # Search for a match in each item, case insensitively 
     print(s) # Print if found 

출력 : nike itemultra item.

코드에서 for k in key:으로 패턴 문자를 반복합니다. re.findall을 사용하면 k의 단일 문자와 일치하는 모든 중복되지 않는 일치가 검색되었으며 head[0] 만 확인되었으며 다른 모든 항목은 고려되지 않았습니다.