Прежде всего, во входном файле есть какая-то ошибка. Если он содержит растровые изображения, то это не допустимый текстовый файл с кодировкой utf-8, а какой-то другой формат, который заменяет действительные символы смайликов utf-8 на растровые изображения.
Но пример текстовых данных, который вы скопировали, является правильным utf-8, поэтому я предполагаю, что вы всегда можете использовать его как ввод.
Разобравшись с этим, используемое вами регулярное выражение не будет соответствовать указанному образцу данных, в основном потому, что вы явно перечисляете классы символов и, например, не включая цифры, поэтому номера телефонов не совпадают в ваших данных.
Я бы советовал не использовать этот подход и использовать универсальные захваты для произвольных полей, таких как имя пользователя и полезная нагрузка сообщения. При необходимости эти поля можно очистить после разбиения текстового файла на записи.
т.е. Я бы использовал это выражение:
pattern = ^([0-9]{2}\/[0-9]{2}\/[0-9]{2}),(\s[0-9]{2}:[0-9]{2})\s-\s(.*?):\s(.*)$
, который помещает дату, время, имя пользователя и полезную нагрузку в четыре группы захвата. e.g.:
import re
rx = re.compile( "([0-9]{2}\/[0-9]{2}\/[0-9]{2}),\s([0-9]{2}:[0-9]{2})\s-\s(.*?):\s(.*)" )
with open( "file.txt", "r", encoding="utf-8" ) as fh:
line = fh.readline()
while line:
data = rx.match( line ).group( 1, 2, 3, 4 )
print( "date :", data[0], "time :", data[1], "user :", data[2], "msg :", data[3] )
line = fh.readline()
дает
date : 10/14/18 time : 15:57 user : Mehmet Senturk msg : <Media omitted>
date : 10/14/18 time : 16:00 user : Gülden Çağıl ?? msg : done
date : 10/14/18 time : 16:05 user : Mehmet Senturk msg : ?
date : 10/14/18 time : 17:08 user : Niyazi Şakiroğlu msg : Beyler yeni app hazır
И я выполняю всю очистку данных (например, удаление эмодзи и литералов) после анализа структуры текстового файла.
Попытка сделать обе вещи одновременно потребует очень грязного регулярного выражения.