如何在字符串“ On x John write:”之后去除所有内容

时间:2019-02-13 10:49:01

标签: python python-3.x

我有一个很大的字符串(来自阅读电子邮件)。现在,当用户回复时,典型的回复如下所示:

"On x x x wrote:"

我想删除此模式之后的所有文本。但是,我不确定如何识别此模式。

我知道如何在特定字词或字符后去除所有内容:

abc = abc.split('From:', 1)[0]

但是如果在模式Onwrote:之间插入文本,您会怎么做?

示例:

\r\nOn Tue, Feb 12, 2019 at 1:11 PM +0100, "Name" <email@email.com<mailto:email@email.com>> wrote:\r\n

4 个答案:

答案 0 :(得分:3)

正则表达式将对此进行排序:

re.match(r"\r\nOn.+wrote:", email)[0]

^表示字符串的开头
On是单词“开”
.+是任何事物的一个或多个实例
wrote:是“写”一词

最后的[0]将从电子邮件中获得第一个匹配项 email.strip()删除空格

示例:

import re

email =  '\r\nOn Tue, Feb 12, 2019 at 1:11 PM +0100, "Name" <email@email.com<mailto:email@email.com>> wrote:\r\n'
extracted = re.match(r"On.+wrote:", email.replace('\r', '').replace('\n', ''))[0]
print(extracted)

Out[163]: 'On Tue, Feb 12, 2019 at 1:11 PM +0100, "Name" <email@email.com<mailto:email@email.com>> wrote:' 

正则表达式的另一种选择是找到单词“ On”第一次出现的索引和单词“ wrote”的索引,然后将整个文本分为两个子集:

extracted = email[email.find('On'):email[email.find('On'):].find('wrote:')+8]

答案 1 :(得分:1)

abc.split(“ on。* wrote:”)[1]

https://regexr.com 这是学习正则表达式的好网站!

答案 2 :(得分:0)

您可以使用正则表达式,然后在完全匹配时将其分割。 您可以使用/ On / regex / From:/,其中regex是检测“ x x x”的正则表达式。

更多信息可以在文档中找到:enter link description here

答案 3 :(得分:0)

您可以使用以下正则表达式找到您的模式:

 /(?:On\ x\ x\ x\ wrote\:)/