gpt4 book ai didi

python re - 在一个大字符串中提取一个人的聊天文本

转载 作者:太空宇宙 更新时间:2023-11-04 09:44:39 25 4
gpt4 key购买 nike

我希望从一个大字符串中获取一个人的聊天文本,该字符串中还包含另一个人。其他人的聊天文本需要从字符串中删除。通常在简单的情况下会有标点符号或 \n 标记,但在这种情况下,除了对方的名字外,没有其他任何东西来显示聊天的结束。有时一个人会连续进行多次聊天。聊天文本字符串的示例如下(我正在寻找 Joe 的聊天):

Joe:嘿迈克,我想知道你今天在做什么 Joe:我很无聊。迈克:嘿乔不确定,你有什么计划吗?乔:我在考虑去看棒球比赛 乔:我需要离开家。迈克:听起来不错,那儿见!迈克:让我知道你什么时候离开

我最终需要的字符串是:

嘿迈克,我想知道你今天在做什么,我很无聊。我正在考虑去看棒球比赛,我需要离开家。

我对保留“Joe”标签的答案没有意见,我只是想不出一种方法来删除“Mike”标签和在 Python 中使用 re 聊天。谁能帮我解决这个问题?

最佳答案

您可以使用正则表达式来删除所有匹配大写字母、小写字母、然后是冒号的字符串,以及空字符串。

import re 
text = re.sub(r'[A-Z][a-z]+:', '', text)

我用来删除标签或某个人的最稳定的方法是在正则表达式上拆分

text = re.compile(r'([A-Z][a-z]+:)').split(text)[1:]

获取如下列表:

['Joe:', " hey mike i was wondering what you're doing today ", 'Joe:', ' im bored. ', 'Mike:', ' hey joe not sure, do you have any plans? ', 'Joe:', ' i was thinking about going to the baseball game ', 'Joe:', ' Ineed to get out of the house. ', 'Mike:', " Sounds good I'll meet you there! ", 'Mike:', " Let me know what time you're leaving"]

然后您可以迭代它并为每个其他元素的文本制作一个映射

map_ = {}
for i in range(1,len(text),2):
map_[text[i-1]] = map_.get(text[i-1],'') + text[i]

获取演讲者与他们所有文本的映射。

{'Joe:': " hey mike i was wondering what you're doing today  im bored.  i was thinking about going to the baseball game  I need to get out of the house. ", 'Mike:': " hey joe not sure, do you have any plans?  Sounds good I'll meet you there!  Let me know what time you're leaving"}

然后你就可以用它做你想做的事了。

关于python re - 在一个大字符串中提取一个人的聊天文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50275394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com