2016-10-10 23 views
-2

我有一個項目,我拉出了一些subreddit(/ r/buildapcsales)的帖子,並給我發送了一些優惠。如何用python拉出字符串中的數字?

例如:

  1. [顯示器] AOC 21.5" 1080 75Hz的1ms的FreeSync監視器 - $ 105($ 229.99 - $ 110出售 - $ 15促銷直通10/13)
  2. [顯示器] EQD宇通EQ278CG 27個英寸144hz 1080 3ms的 - $ 149.99(新蛋閃存)
  3. [顯示器] EQD宇通EQ248CG 24寸144hz 1080 3ms的 - $ 128.99(新蛋閃存)
  4. [顯示器]宏基CB280HK 4K TN 1ms的60HZ - $ 249.99($ 449.99 - $ 200即時回扣)
  5. [顯示器]宏基K272HUL Ebmidpx 27」 2560 X 1440個1ms的VESA貼裝 - $ 239.99($六十時)

我想拉出粗體數字,並將它們與閾值(< = 200)進行比較,但問題是我不能使用正則表達式,因爲這會拉出計算(即$ 449.99 - $ 200即時折扣)也在右側。

有沒有更聰明的方法來做到這一點?我完全失去了。

+1

拆分就開括號,然後只搜索第一部分字符串w /正則表達式 –

+0

如果您需要幫助,您需要發佈代碼的[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)裏德。 – CAB

回答

2

我不能使用正則表達式,因爲這樣會在右側提取計算(即$ 449.99 - $ 200 Instant Rebate)。

你仍然可以使用正則表達式,並提取破折號後的第一個量來:

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 
相關問題