SendGrid -- Stressful Subject

索菲亚这一个月压力很大,决定去度假一周。为了避免在休假期间出现压力,她想把邮件转发给斯蒂芬。
该功能应该能识别出主题是否有压力。一个有压力的主题行意味着所有的字母都是大写的,并且/或以至少3个感叹号结尾,并且/或包含以下至少一个“红色”字:“帮助”、“尽快”、“紧急”。任何“红色”的单词都可以用不同的方式拼写——“HELP”、“HELP”、“HELP”、“H!E!L!P!”"H-E-L-P",即使是很随意的" HHHEEEEEEELLP"

普通版:

def is_stressful(subj):
    stress = subj.isupper() or subj[-3:] == '!!!'
    subj = subj.lower()
    for i in ['help', 'asap', 'urgent']:
        if i in subj:
            stress = True        
    if not stress:
        subj = subj.split(' ')
        for i in subj:
            letters = set()
            for letter in i:
                if letter.isalpha():
                    letters.add(letter)
            if letters in [{'h', 'e', 'l', 'p'}, {'a', 's', 'p'}, {'u', 'r', 'g', 'e', 'n', 't'}]:
                stress = True
    return stress

正则匹配版:

import re
def is_stressful(subject):
    if subject.isupper():
        return True
    subject = subject.lower()
    if subject[-3:] == '!!!':
        return True
    red_words = ["help", "asap", "urgent"]
    if re.search(r"h\S*e\S*l\S*p\S*", subject):
        return True
    if re.search(r"a\S*s\S*a\S*p\S*", subject):
        return True
    if re.search(r"u\S*r\S*g\S*e\S*n\S*t\S*", subject):
        return True
    return False

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值