如何在python中使用正则表达式提取语音标记中的多个子字符串

2024-04-26 11:37:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个Python脚本,它从Facebook Messenger(以json格式提供)获取一个存档的聊天记录,并将其重新格式化为文本,以便存档几年的D&;D角色扮演。因此,我希望能够将被认为是“说话”的角色与被认为是角色动作的角色区分开来,这样就可以对它们应用不同的格式。这是有问题的,因为聊天从来就不是为这个目的而设计的,所以“和”都被用来描述语言

当读入Python时,messenger json文件将成为字典对象。我目前正在遍历字典中的每条消息,并尝试在每条消息的“内容”键中查找所有出现的语音(因为每条消息中可能有多个语音位),然后将它们全部打印出来。我目前正试图用Python的REfindall函数来实现这一点:

for msg in msgs["messages"]:
    content = msg["content"]
    singlecheck = r"\s\'(.*?)\'\s"
    doublecheck = r'\"(.*?)\"'
    print(re.findall(f"{doublecheck}|{singlecheck}", content))

目前,它正在捕获给定json文件中的大部分语音,但受到a)具有多个语音实例的消息的限制,因为尽管调用findall,它似乎只找到第一个;和b)在开头或结尾用撇号缩写的单词,如“aven't或missin”


Tags: 文件脚本json消息角色facebook字典格式