我有一个 .txt 文件,其中包含如下数据:
[12.06.17, 13:18:36] Name1: Test test test
[12.06.17, 13:20:20] Name2 ❤️: blabla
[12.06.17, 13:20:44] Name2 ❤️: words words words
words
words
words
[12.06.17, 13:29:03] Name1: more words more words
[12.06.17, 13:38:52] Name3 Surname Nickname: 👍🏼
[12.06.17, 13:40:37] Name1: message?
请注意,消息之前可以有多个名称,也可以出现多行消息。在过去的几天里,我已经尝试了很多方法来将数据分成“日期”、“时间”、“名称”、“消息”组。
我能够弄清楚,正则表达式
(.)(\d+\.\d+\.\d+)(,)(\s)(\d+:\d+:\d+)(.)(\s)([^:]+)(:)
能够捕获消息之前的所有内容(参见:https : //regex101.com/r/hQlgeM/3)。但我无法弄清楚如何添加消息,以便将多行消息分组到上一条消息中。
最后:如果我能够使用正则表达式从 .txt 中捕获每个组,我如何实际将每个组传递到一个单独的列中。过去三天我一直在查看示例,但我仍然无法弄清楚如何最终构建此数据框。
我尝试使用的代码:
df = pd.read_csv('chat.txt', names = ['raw'])
data = df.iloc[:,0]
re.match(r'\[([^]]+)\] ([^:]+):(.*)', data)
另一个无效的尝试:
input_file = open("chat.txt", "r", encoding='utf-8')
content = input_file.read()
df = pd.DataFrame(content, columns = ['raw'])
df['date'] = df['raw'].str.extract(r'^(.)(\d+\.\d+\.\d+)', expand=True)
df['time'] = df['raw'].str.extract(r'(\s)(\d+:\d+:\d+)', expand=True)
df['name'] = df['raw'].str.extract(r'(\s)([^:]+)(:)', expand=True)
df['message'] = df['raw'].str.extract(r'^(.)(?<=:).*$', expand=True)
df
湖上湖
相关分类