2016-10-10 3 views
-2

나는 subreddit (/ r/buildapcsales)의 일부 게시물을 꺼내서 몇 가지 거래로 이메일을 보낸다. - $ (105) (229.99 $ - $ (110) 판매 - $ (15) 프로모션 10/13 통해) 파이썬으로 문자열에서 숫자를 꺼내는 방법은 무엇입니까?

  • [모니터] EQD Auria EQ278CG

    1. [모니터] AOC 21.5 "1080p의 75Hz에서의 1ms의 FreeSync 모니터 : 예를 들어

      27 인치 144hz의 1080p의 3MS - $ 149.99 (뉴에 그 플래시)

    2. [모니터] EQD Auria EQ248CG 24 인치 144hz의 1080p의 3MS - $ 128.99 (뉴에 그 플래시)
    3. [모니터] 에이서 CB280HK 4K TN의이 1ms의 60HZ - $ 249.99 (449.99 $ - $ (200) 인스턴트 리베이트)
    4. [모니터] 에이서 K272HUL Ebmidpx 27 일 "2560 X 1440 1ms의 VESA 마운트 - $ 239.99 ($ (60) 오프)

    굵게 표시된 숫자를 꺼내어 문턱 값 (< = 200)과 비교하고 싶습니다.하지만 문제는 정규식을 사용할 수 없다는 것입니다. $ 449.99 - $ 200 즉석 리베이트).

    또 다른 영리한 방법이 있습니까? 나는 완전히 잃어 버렸다.

  • +1

    열린 괄호에 분할 한 후 첫 번째 검색 정규식이있는 문자열 부분 –

    +0

    도움이 필요하면 작성한 코드를 [최소, 완전하며 검증 가능한 예제] (http://stackoverflow.com/help/mcve)에 게시해야합니다. ried. – CAB

    답변

    2

    오른쪽에 계산 (즉, $ 449.99 - $ 200 즉석 리베이트)이 나오기 때문에 정규 표현식을 사용할 수 없습니다.

    당신은 여전히 ​​정규 표현식을 사용하고 첫번째 금액은 대시 후 오는 추출 할 수 있습니다 :

    import re 
    
    lines = [ 
        '1. [Monitor] AOC 21.5" 1080p 75Hz 1ms FreeSync Monitor - $105 ($229.99 - $110 sale - $15 promo thru 10/13)', 
        '2. [Monitor] EQD Auria EQ278CG 27 inch 144hz 1080p 3ms - $149.99 (Newegg Flash)', 
        '3. [Monitor] EQD Auria EQ248CG 24 inch 144hz 1080p 3ms - $128.99 (Newegg Flash)', 
        '4. [Monitor] Acer CB280HK 4k TN 1ms 60hz - $249.99 ($449.99 - $200 Instant Rebate)', 
        '5. [Monitor] Acer K272HUL Ebmidpx 27” 2560 x 1440 1ms VESA Mountable - $239.99 ($60 off)' 
    ] 
    
    pattern = re.compile(r"- \$(\d+)") 
    for line in lines: 
        print(pattern.search(line).group(1)) 
    

    인쇄 :

    105 
    149 
    128 
    249 
    239 
    
    관련 문제