Как извлечь каждую часть строки из группового чата с помощью python? - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть текстовый файл групповых разговоров, который я пытаюсь проанализировать.Это выглядит так:

[4/30/18, 5:49:51 PM] ‪+11 11 111 1111: Thanks for the recommendation. 
[4/30/18, 5:51:21 PM] Joe Johnson: It's a pleasure to know you! 
[4/30/18, 6:00:55 PM] ‪+11 1 11 1111 1111: Nice!
[4/30/18, 6:22:01 PM] ‪+1 (111) 111‑111: sure.. I will look into.

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

Мне удалось разделить Даты и Время, используяre пакет в Python с использованием кода ниже:

date_regex = re.compile(r'(\d+/\d+/\d+)')
date = date_regex.findall(watsup_content)
time_regex = re.compile(r'(\d{1,2}:\d{2}:\d{2} AM|\d{1,2}:\d{2}:\d{2} PM)')
time = time_regex.findall(watsup_content)

Однако у меня возникают проблемы с получением пользователей (которые иногда имеют иностранные номера, а иногда и имена), а также фактические сообщения, которые послеКолон

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

1 Ответ

0 голосов
/ 22 апреля 2019

Попробуйте:

import re

with open('myfile.txt', 'r') as f:
    content = f.readlines()

date_regex = re.compile(r'(\d+/\d+/\d+)')
time_regex = re.compile(r'(\d{1,2}:\d{2}:\d{2} AM|\d{1,2}:\d{2}:\d{2} PM)')

for line in content:
    print(line)
    date = date_regex.findall(line)
    time = time_regex.findall(line)
    content = ":".join(line.split(':')[3:]).strip()
    author = line.split(']')[-1].split(':')[0].strip()
    print(date)
    print(time)
    print(author)
    print(content)
    print('---')

и вы получите:

[4/30/18, 5:49:51 PM] ‪+11 11 111 1111: Thanks for the recommendation: bye! 

['4/30/18']
['5:49:51 PM']
‪+11 11 111 1111
Thanks for the recommendation: bye!
---
[4/30/18, 5:51:21 PM] Joe Johnson: It's a pleasure to know you! :D:D

['4/30/18']
['5:51:21 PM']
Joe Johnson
It's a pleasure to know you! :D:D
---
[4/30/18, 6:00:55 PM] ‪+11 1 11 1111 1111: Nice! :X

['4/30/18']
['6:00:55 PM']
‪+11 1 11 1111 1111
Nice! :X
---
[4/30/18, 6:22:01 PM] ‪+1 (111) 111‑111: sure.. I will look into. ::)

['4/30/18']
['6:22:01 PM']
‪+1 (111) 111‑111
sure.. I will look into. ::)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...