Разбор журнала чата WhatsApp с регулярным выражением - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь разобрать журнал чата WhatsApp с помощью регулярных выражений.У меня есть решение, которое работает в большинстве случаев, но я пытаюсь его улучшить, но не знаю, как это сделать, так как я совсем новичок в regex.

Файл chat.txt выглядит следующим образом:

[06.12.16, 16:46:19] Person One: Wow thats amazing
[06.12.16, 16:47:13] Person Two: Good morning and this goes over multiple
lines as it is a very long message
[06.12.16, 16:47:22] Person Two: ::

Хотя мое решение до сих пор правильно анализировало большинство этих сообщений, однако у меня есть несколько сотен случаев, когда сообщение начинается с двоеточия, как в последнем примере выше.Это приводит к нежелательному значению Person Two: : в качестве отправителя.

Вот регулярное выражение, с которым я работаю до сих пор:

pattern = re.compile(r'\[(?P<date>\d{2}\.\d{2}\.\d{2}),\s(?P<time>\d{2}:\d{2}:\d{2})]\s(?P<sender>(?<=\s).*(?::\s*\w+)*(?=:)):\s(?P<message>(?:.+|\n+(?!\[\d{2}\.\d{2}\.\d{2}))+)')

Любые советы о том, как можно обойти эту ошибкубыл бы оценен!

1 Ответ

0 голосов
/ 08 марта 2019

Я бы предварительно обработал список, чтобы удалить последовательные двоеточия перед применением регулярного выражения.Таким образом, для каждой строки, например,

 line = [06.12.16, 16:47:22] Person Two: ::
 line = line.replace("::","")

, что дает:

[06.12.16, 16:47:22] Person Two: 

Затем вы можете вызвать функцию регулярного выражения для предварительно обработанных данных.

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