2011-02-25 4 views
1

pyparsing을 배우려고합니다. 유망한 것으로 들리며 텍스트 처리에 재미있을 것입니다. 어쨌든, 여기 내 질문입니다 :pyparsing : 특정 텍스트가 포함 된 문자열 추출

나는 코스 명 목록이 있습니다. 예 :

courselist = ["Project Based CALC", 
      "CALCULUS I", 
      "Calculus II", 
      "Intermediate MICRO", 
      "Intermediate CALCULUS advance", 
      "UNIVERSITY PHYSICS"] 

위와 같이 계산법과 관련된 목록에서 원하는 코스를 추출하고 싶습니다. CALCULUS 또는 약어 CALC가있는 코스입니다. 먼저,이 단어가 대문자로만 표시된다고 가정하십시오 (위의 예에서 소문자로 된 단어가 있으며, 잠시 무시하십시오). ,

import pyparsing as pp 

calc = pp.Literal("CALC") 
for entry in courselist: 
    if len(calc.searchString(entry)) >= 1: 
     print entry 
    else: 
     pass 

내 첫 번째 질문은이 여부를 사용하여이 대한 파싱을하는 더 나은 방법 :

나는 다음과 같은 코드를 작성했다?

위의 내용은 Calculus II입니다. 내가으로 calc를 정의하여 해당 잡을 수 알고

calc = pp.Literal("CALC") | pp.Literal("Calc") 

하지만이 cAlc을 그리워합니다. CALC의 모든 대소 문자가 일치하도록 문법을 지정하는 방법이 있습니까?

도움 주셔서 감사합니다.

+0

, 그리고 UML 다이어그램, HTMLDOC 및 예입니다 SourceForge의 소스 배포본에 포함되어있다. O'Reilly에서 10 달러에 eBook을 가져올 수도 있습니다. – PaulMcG

답변

2
calc = pp.CaselessLiteral('calc') 
for entry in courselist: 
    if calc.searchString(entry, 1): 
     print entry 

효과는 비슷합니다 : 당신은 대한 파싱 위키 (pyparsing.wikispaces.com)에서 문서/문서 링크의 번호를 찾을 수 있습니다

for entry in courselist: 
    if 'calc' in entry.lower(): 
     print entry 
+0

좋아요! 답변 해주셔서 감사합니다. – Curious2learn

관련 문제