2016-10-10 19 views
-2

私は、サブリディット(/ r/buildapcsales)のいくつかの投稿を取り出し、いくつかのお得な情報をメールで送信するプロジェクトを持っています。 - $ 105(229.99 $ - $ 110売却 - $ 15プロモーション10/13スルー) Pythonで文字列の数値を引き出す方法は?

  • [モニタ] EQD Auria EQ278CG

    1. [モニター] AOC 21.5" 1080 75Hzのは1msのFreeSyncモニタ:例えば

      27インチ144hz 1080 3msの - $ 149.99(Neweggがフラッシュ)

    2. [モニタ] EQD Auria EQ248CG 24インチ144hz 1080 3msの - $ 128.99(Neweggがフラッシュ)
    3. [モニタ]エイサーCB280HK 4K TNの1ミリ秒の60Hzの - $ 249.99(449.99 $ - $ 200インスタントリベート)
    4. [モニタ]エイサーK272HUL Ebmidpx 27” 2560 X 1440個の1msのVESAマウント可能 - $ 239.99($ 60オフ)

    太字の数値を抜き出して、しきい値と比較したいのですが(< = 200)、問題は、正規表現を使用できないことです。 $ 449.99 - $ 200インスタントリベート)も表示されます。

    もう少し賢い方法がありますか?私は完全に失われています。

  • +1

    開き括弧に分割して、最初の検索します正規表現w/regexの文字列の一部 –

    +0

    ヘルプが必要な場合は、あなたが持っているコードの[Minimal、Complete、and Verifiable example](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 
    
    関連する問題