Шаблон должен быть :
- Захватывайте целые сообщения, включая многострочные.
- Обнаруживать отсутствие пользователя и классифицировать его как групповое уведомление в столбце пользователя.
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
Мобильная версия