Python 如何在图案后去除所有东西;约翰在x上写道:“我不知道你是谁。”;一串
我有一个大字符串(来自阅读电子邮件)。现在,当用户回复时,典型的回复如下所示:Python 如何在图案后去除所有东西;约翰在x上写道:“我不知道你是谁。”;一串,python,python-3.x,Python,Python 3.x,我有一个大字符串(来自阅读电子邮件)。现在,当用户回复时,典型的回复如下所示: "On x x x wrote:" 我想去掉这个模式后面的所有文本。然而,我不知道如何识别这种模式 我知道如何去掉某个单词或字符后的所有内容: abc = abc.split('From:', 1)[0] 但是,当您在上的模式和写入的模式之间有文本时,您会怎么做: 样本: \r\nOn Tue, Feb 12, 2019 at 1:11 PM +0100, "Name" <email@email.com&l
"On x x x wrote:"
我想去掉这个模式后面的所有文本。然而,我不知道如何识别这种模式
我知道如何去掉某个单词或字符后的所有内容:
abc = abc.split('From:', 1)[0]
但是,当您在上的模式和写入的模式之间有文本时,您会怎么做:
样本:
\r\nOn Tue, Feb 12, 2019 at 1:11 PM +0100, "Name" <email@email.com<mailto:email@email.com>> wrote:\r\n
\r\n 2019年2月12日星期二下午1:11+0100,“Name”写道:\r\n
您可以使用正则表达式,然后在完全匹配时可以拆分它。
您可以使用/On/regex/From:/,其中regex是检测“x”的正则表达式
更多信息可以在文档中找到:您可以使用正则表达式,然后当您有精确匹配时,可以拆分它。
您可以使用/On/regex/From:/,其中regex是检测“x”的正则表达式
更多信息可在文档中找到:正则表达式将对此进行排序:
re.match(r"\r\nOn.+wrote:", email)[0]
^
表示字符串的开头
On
是单词“On”
+
是任何事物的一个或多个实例
writed:
是“writed”这个词
最后的[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:'
正则表达式将对此进行排序:
re.match(r"\r\nOn.+wrote:", email)[0]
^
表示字符串的开头
On
是单词“On”
+
是任何事物的一个或多个实例
writed:
是“writed”这个词
最后的[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\ x\ x\ x\ wrote\:)/
可以使用以下正则表达式查找模式:
/(?:On\ x\ x\ x\ wrote\:)/
abc.split(“on.*写:”)[1]
这是一个学习正则表达式的好网站 abc.split(“on.*写:”)[1]
这是一个学习正则表达式的好网站 这比你想象的要难。不同的电子邮件客户端使用不同的短语(不一定是英语)和不同的日期格式。行是否总是以结尾,写着:
你能发布一个输出示例吗?@BoarGules我同意,但我还没有找到合适的解决方案。因此,为什么我试图用肮脏的方式来做,只是为了让某些东西就位。欢迎任何提示。这比你想象的要难。不同的电子邮件客户端使用不同的短语(不一定是英语)和不同的日期格式。行是否总是以结尾,写着:
你能发布一个输出示例吗?@BoarGules我同意,但我还没有找到合适的解决方案。因此,为什么我试图用肮脏的方式来做,只是为了让某些东西就位。欢迎任何提示。嗯,我得到:TypeError:“NoneType”对象不可下标。基本上他找不到这个表达。你能举一个电子邮件回复的例子吗?字符串中可能有前导字符,在这种情况下,您可能需要在2019年2月12日星期二下午1:11+0100时删除^
\r\n,“Name”写道:\r\n\n@JohnAndrews它的输出应该是?问题似乎是前面和后面基本上是\r\n。更新上面的示例。嗯,我得到:TypeError:“NoneType”对象不可下标。基本上他找不到这个表达。你能举一个电子邮件回复的例子吗?字符串中可能有前导字符,在这种情况下,您可能需要在2019年2月12日星期二下午1:11+0100时删除^
\r\n,“Name”写道:\r\n\n@JohnAndrews它的输出应该是?问题似乎是前面和后面基本上是\r\n。更新上面的示例。x x x x只是一个示例,它可以是任何/(?:On)(?:*)(?:writed)/-这将搜索介于“On”和“writed”之间的任何内容。x x x只是一个示例,它可以是任何/(?:On)(?:*)(?:writed)/-这将搜索介于“On”和“writed”之间的任何内容。