Как искать и удалять строки с помощью регулярных выражений? - PullRequest
2 голосов
/ 28 сентября 2019

У меня есть такая строка:

'<div class="hotels-hotel-review-about-with-photos-Reviews__subratingRow--2u0CJ"><span class="ui_bubble_rating bubble_45"></span><div class="hotels-hotel-review-about-with-photos-Reviews__subratingLabel--H8ZI0">Location</div></div>'

, и я хочу извлечь числовое значение, которое следует после bubble_, то есть 45.

Я пытался:

rating = re.search('bubble_(\d+)', str(line)).group(0)
rating = re.sub("bubble_" , '', rating)

Мой код работает, но мне было интересно, есть ли более питонический, чтобы сделать это.(Вместо двух строк кода, только одна строка!) Спасибо

Ответы [ 3 ]

3 голосов
/ 28 сентября 2019

Используйте это регулярное выражение:

(?<=bubble_)(\d+)

И используйте одну строку:

rating = re.search('(?<=bubble_)(\d+)', str(line)).group(0)
3 голосов
/ 28 сентября 2019

Просто замените .group(0) на .group(1), чтобы получить доступ к содержимому группы захвата:

line = '<div class="hotels-hotel-review-about-with-photos-Reviews__subratingRow--2u0CJ"><span class="ui_bubble_rating bubble_45"></span><div class="hotels-hotel-review-about-with-photos-Reviews__subratingLabel--H8ZI0">Location</div></div>'
rating = re.search('bubble_(\d+)', str(line)).group(1)
print rating

Вывод:

45
0 голосов
/ 28 сентября 2019

Как насчет этого?

rating = re.sub("bubble_" , '', re.search('bubble_(\d+)', str(line)).group(0))

Честно говоря, я бы предпочел написать это в 2 строки, чтобы улучшить читаемость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...