首页 > 解决方案 > Python 正则表达式按人名分组句子

问题描述

我有以下文字:

"- Nike: Hey, where are you?\n10/6/20, 8:51 - Mike: Soon\n10/6/20, 8:55 - Nike: how are you guy?\n10/4/20, 8:55 - Mike: It's okay\n10/4/20, 9:05"

我想制作 2 个如下列表:

nike = ["Hey, where are you?", "how are you guy?"]
mike = ["Soon", "It's okay"]

知道我怎么能做这样的事情吗?

多谢你们!

标签: python-3.xregex

解决方案


import re

s = "- Nike: Hey, where are you?\n10/6/20, 8:51 - Mike: Soon\n10/6/20, 8:55 - Nike: how are you guy?\n10/4/20, 8:55 - Mike: It's okay\n10/4/20, 9:05"

out = {}
for name, sentence in re.findall(r'([A-Za-z]+):\s*(.*)$', s, flags=re.M):
    out.setdefault(name, []).append(sentence)

print(out)

印刷:

{'Nike': ['Hey, where are you?', 'how are you guy?'], 'Mike': ['Soon', "It's okay"]}

推荐阅读