Как я могу оптимизировать производительность этого шаблона регулярного выражения, который извлекает сообщения в Python?Python

Программы на Python
Ответить
Anonymous
 Как я могу оптимизировать производительность этого шаблона регулярного выражения, который извлекает сообщения в Python?

Сообщение Anonymous »

Мне нужен шаблон регулярного выражения для создания DataFrame Pandas с тремя отдельными столбцами: дата, пользователь и сообщение. Я считаю, что регулярное выражение — лучший вариант для этого случая, но я хотел бы знать, есть ли другие методы, которые могут достичь того же результата быстрее.
Шаблон должен быть :
  • Захватывайте целые сообщения, включая многострочные.
  • Обнаруживать отсутствие пользователя и классифицировать его как групповое уведомление в столбце пользователя.
Я уже создал one, но мне кажется, что он не совсем оптимизирован, и его запуск на больших наборах данных занимает несколько секунд. Вот шаблон, который у меня сейчас есть, а также пример данных и формата, которые мне нужно извлечь.
data = """
9/6/22, 11:28 - Group creator created group "Example"
9/6/22, 11:39 - User1: This is some text
9/6/22, 11:58 - Group creator changed group name to "Example2"
9/6/22, 12:13 - User2: This is
some text
with multiple lines
9/6/22, 13:13 - Admin changed group profile photo
9/6/22, 14:45 - User3: Hi StackOverflow
"""

pattern = r'\d{1,2}/\d{1,2}/\d{2,4},\s\d{1,2}:\d{2}\s-\s'

#pass the pattern and data to split it to get the list of messages with users
messages = re.split(pattern, data)[1:]

#extract all dates
dates = re.findall(pattern, data)

#create dataframe
df = pd.DataFrame({'user_message': messages, 'date': dates})

#separate Users and Message
users = []
messages = []
for message in df['user_message']:
entry = re.split(r'([\w\W]+?):\s', message)
if entry[1:]: # user name
users.append(entry[1])
messages.append(" ".join(entry[2:]))
else:
users.append('group_notification')
messages.append(entry[0])

df['user'] = users
df['message'] = messages
df.drop(columns=['user_message'], inplace=True)


Подробнее здесь: https://stackoverflow.com/questions/790 ... s-messages
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»