索菲亚这一个月压力很大,决定去度假一周。为了避免在休假期间出现压力,她想把邮件转发给斯蒂芬。
该功能应该能识别出主题是否有压力。一个有压力的主题行意味着所有的字母都是大写的,并且/或以至少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