2016-10-10 8 views
-2

У меня есть проект, где я вытаскиваю некоторые сообщения из subreddit (/ r/buildapcsales) и посылаю мне по электронной почте некоторые предложения.Как вывести номер в строке с помощью python?

Например:

  1. [Монитор] AOC 21.5" 1080p 75Hz 1мс FreeSync Monitor - $ 105 ($ 229,99 - $ 110 продажи - $ 15 промо через 10/13)
  2. [Монитор] EQD Auria EQ278CG 27 дюймов 144hz 1080p 3ms - $ 149,99 (Newegg Flash)
  3. [монитор] EQD Auria EQ248CG 24 дюймов 144hz 1080p - 3 мс $ 128,99 (Newegg Flash)
  4. [Монитор] Acer CB280HK 4k TN 1 мс 60Гц - $ 249,99 ($ 449,99 - $ 200 мгновенных фальца)
  5. [Монитор] Acer K272HUL Ebmidpx 27” 2560 х 1440 1мс VESA Mountable - $ 239,99 ($ 60 выкл)

Я хочу вытащить выделенные жирным шрифтом цифры и сравнить их с порогом (< = 200), но проблема в том, что я не могу использовать регулярное выражение, потому что это вытащит вычисления (т. Е. $ 449.99 - $ 200 Instant Rebate) также справа.

Есть ли еще более умный способ сделать это? Я полностью потерян.

+1

Split на открывающей скобке, а затем искать только первый часть строки w/regex –

+0

Если вам нужна помощь, вам нужно отправить [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) кода, который у вас есть t Ried. – 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 

 Смежные вопросы

  • Нет связанных вопросов^_^