我有一个看起来像电子邮件正文的文本,如下所示。
To: Abc Cohen <abc.cohen@email.com> Cc: <braggis.mathew@nomail.com>,<samanth.castillo@email.com> Hi
Abc, I happened to see your report. I have not seen any abnormalities and thus I don't think we
should proceed to Braggis. I am open to your thought as well. Regards, Abc On Tue 23 Jul 2017 07:22
下午 托尼·斯塔克写道:
然后我有一个关键字列表,如下所示。
no_wds = ["No","don't","Can't","Not"]
yes_wds = ["Proceed","Approve","May go ahead"]
目标:
我想首先搜索上面给出的文本字符串,如果存在(或存在)上面列出的任何关键字,那么我想提取这些关键字之间的字符串。在这种情况下,我们有Not
个匹配的don't
和no_wds
个关键字。另外,我们还有Proceed
列表中匹配的yes_wds
关键字。因此,我要提取的文本如下所示
txt = ['seen any abnormalities and thus I don't think we should','think we should']
我的方法:
我尝试过
re.findall(r'{}(.*){}'.format(re.escape('|'.join(no_wds)),re.escape('|'.join(yes_wds))),text,re.I)
或
text_f = []
for i in no_wds:
for j in yes_wds:
t = re.findall(r'{}(.*){}'.format(re.escape(i),re.escape(j)),text, re.I)
text_f.append(t)
没有得到任何合适的结果。然后我尝试了str.find()
方法,也没有成功。
我试图从here获得线索。
有人可以帮助解决这个问题吗?我有点希望看到任何非正则表达式的解决方案,因为有时正则表达式不太适合。话虽如此,如果有人可以提出基于正则表达式的解决方案,在这里我可以迭代列表,这是值得欢迎的。
答案 0 :(得分:0)
浏览包含键的列表,将迭代器用作拆分器(whatever.split(yourIterator))。
编辑:
我没有在做作业,但这应该可以帮助您:
我决定循环遍历邮件的每个空格列表,搜索关键字并将命中索引添加到列表中,然后我使用这些索引对邮件进行切片,可能值得尝试对邮件进行切片邮件,但不拆分,但我不会做您的作业。而且,当索引更多时,您必须找到一种使过程自动化的方法,提示:检查大小是否均匀,或者切片时间不好。
*请注意,您应该替换from Crypto.Cipher import AES
import binascii
KEY = binascii.unhexlify('AAAABBBBCCCCDDDDEEEEFFFF00001111')
plaintext = binascii.unhexlify('11112222333344445555666677778888')
rijn = AES.new(KEY, AES.MODE_ECB)
ciphertext = rijn.encrypt(plaintext)
binascii.hexlify(ciphertext).decode('utf-8')
字符,并找到对键列表进行排序的方法。
\n