Страницы

Поиск по вопросам

четверг, 16 мая 2019 г.

Регулярное выражение количество просмотров

Помогите пожалуйста написать регулярное выражение на Python 3.6.Есть строки типа:
4 дні тому849 478 переглядів 33 730 переглядів35 хвилин тому 16 037 172 перегляди2 дні тому 14 947 360 переглядів1 тиждень тому 1 тиждень тому1 515 110 переглядів
(Порядок может быть именно такой, а вот количество просмотров может меняться)
Я пытался использовать нахождение просмотров по регулярному выражению которое находит числа(и то не все), но так оно собирает только первые числа.
import re
match = re.search('[0-9]+','16 037 172 перегляди2 дні тому')
Как можно эту регулярку дополнить,что бы она собирала количество просмотров?
Пример выхода во втором примере: 33730


Ответ

В данной ситуации, как и вцелом, ответ зависит от того, как именно вам нужно вывести информацию.
Учитывая моё понимание написанного выше, привожу свой вариант решения самой задачи. Соответственно, дополняю как вы просили ваше регулярное выражение
import re
info = ['4 дні тому849 478 переглядів', '33 730 переглядів35 хвилин тому', '16 037 172 перегляди2 дні тому', '14 947 360 переглядів1 тиждень тому', '1 тиждень тому1 515 110 переглядів']
for string in info: match = re.search('([0-9]+\s){2,3}', string)
print(match)
if match: print('True') else: print('False')
Регулярное выражение: ([0-9]+\s){2,3} тут
исполнительная часть выражения взята в скобки - сгрупирована [0-9] - совпадение с этим диапазоном (можно заменить на более regexp'сное \d) +- любое количество символов (в нашем случае от одного до трех, т.к. 3 цифры и пробел) \s - любой знак препинания (можно заменить на [ ]) {2,3} - количество повторений
Стоит учесть Устойчивая конструкция сработает на любое цисло в последовательности (например 2151 5188845 112) только с учетом пробела вконце последовательности Будет выдавать ответ на значения выше тысячи (в примере через оформлены тысячи) Может быть любой знак препинания (
? и т.д.)
Командная строка выдает мне следующее:
<_sre.SRE_Match object; span=(10, 18), match='849 478 '> True <_sre.SRE_Match object; span=(0, 7), match='33 730 '> True <_sre.SRE_Match object; span=(0, 11), match='16 037 172 '> True <_sre.SRE_Match object; span=(0, 11), match='14 947 360 '> True <_sre.SRE_Match object; span=(14, 24), match='1 515 110 '> True
Process returned 0 (0x0) execution time : 0.243 s Press any key to continue . . .

Комментариев нет:

Отправить комментарий