Регулярные выражения в Python

В этой статье мы рассмотрим, как использовать один из основных методов регулярных выражений в python 're.findall()' для извлечения строковых выражений.

Сначала подключим модуль регулярных выражений 're':

import re

Предположим, что у нас есть следующая строка:

test_string1 = 'Python is Amazing!'

Регулярное выражение r “^w+” в re.findall() вернет начало входной строки:

regex_1 = re.findall(r"^w+",test_string1)
print(regex_1)

В выражении r “^w+” символ «^» соответствует началу строки, а «w+» находит буквенно-цифровые символы.

Если удалить '^', то получим:

regex_1 = re.findall(r"w+",test_string1)
print(regex_1)

Попробуем извлечь начало другой строки:

test_string2 = 'Java is Amazing!'

Затем применим 're.findall()', чтобы найти первое слово этой строки:

regex_2 = re.findall(r"^w+",test_string2)
print(regex_2)

Приведем более реальный сценарий использования. Предположим, что у нас есть список заголовков видео YouTube и соответствующее заголовкам количество просмотров на YouTube:

youtube_titles = [("How to Tell if We're Beating COVID-19", 2200000), ("Extreme Closet Clean Out",326000), ("This is $1,000,000 in Food",8800000), ("How To Tell If Someone Truly Loves You ", 2800000), ("How to Tell Real Gold from Fake", 2300000), ("Extreme living room transformation ", 25000)]

Можно найти первое слово каждого заголовка следующим образом:

or title in youtube_titles:
print(re.findall(r"^w+",title[0])[0])

И добавить полученные значения в список:

first_words = []
for title in youtube_titles:
first_words.append(re.findall(r"^w+",title[0])[0])
print(first_words)

Или представить данные в виде списка:

first_words = []
views = []
for title in youtube_titles:
first_words.append(re.findall(r"^w+",title[0])[0])
views.append(title[1])

Затем можно создать DataFrame из первых слов заголовка и просмотров видео:

import pandas as pd
df = pd.DataFrame({'first_words': first_words, 'views':views})
print(df)

А также выполнить группировку и вычислить средние значения для каждого первого слова:

df = df.groupby('first_words')['views'].mean()
print(df)

Отсортируем эти значения в порядке убывания:

df = df.groupby('first_words')['views'].mean().sort_values(ascending = False)
print(df)

Этот тип анализа может помочь в выборе оптимальных заголовков для видео, публикуемых на YouTube.

Заключение

В этой статье мы рассмотрели, как использовать метод re.findall() модуля регулярных выражений Python. Код приведенных в ней примеров доступен на GitHub.