需辨別“red”詞語堰乔,刪除特定標(biāo)點(diǎn)万哪,識別大小寫,識別特定詞組
我的寫法:【find_repeat這個函數(shù)寫的太繁瑣了奕巍,set又報(bào)錯。的止。。需要考慮有沒有其它刪除重復(fù)字符的方法】
def find_repeat(subj):
? ? list2 = list(subj)
? ? list1 = []
? ? for u in range(0,len(subj)-1):
? ? ? ? if list2[u] != list2[u+1]:
? ? ? ? ? ? list1.append(list2[u])
? ? return ''.join(list1)
def is_stressful(subj):
? ? mark = False
? ? red = ["help","asap","urgent"]
? ? str = ""
? ? if subj.isupper():
? ? ? ? mark = True
? ? elif subj[-3:] == "!!!":
? ? ? ? mark = True
? ? else:
? ? ? ? subj = subj.lower()
? ? ? ? subj = list(filter(lambda c: c.isalpha(), subj))
? ? ? ? seq = str.join(subj)
? ? ? ? print(seq)
? ? ? ? for i in red:
? ? ? ? ? ? if seq.find(i) != -1:
? ? ? ? ? ? ? ? mark = True
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? subj1 = find_repeat(subj)
? ? ? ? ? ? ? ? for i in red:
? ? ? ? ? ? ? ? ? ? if i in subj1:
? ? ? ? ? ? ? ? ? ? ? ? mark = True
? ? return mark
其它大神的Random Solution
(正則表達(dá)式)
def is_stressful(subj):
? ? return subj.isupper() or \
? ? ? ? bool(re.search('!{3}$', subj)) or \
? ? ? ? bool(re.search('(h+)(e+)(l+)(p+)|(a+)(s+)(a+)(p+)|(u+)(r+)(g+)(e+)(n+)(t+)', \
? ? ? ? ? ? re.sub('[^a-z\s]', '', subj.lower())))
Creative(使用交集):
for word in stresful:
? ? ? ? kume= {"h","e","l","p"}
? ? ? ? if set(word.lower()).intersection(kume)== kume:
? ? ? ? ? ? check += 1
? ? ? ? ? ? #return True
One-liner寫法(正則表達(dá)式拖叙,用好了可以省很多fliter啊QAQ)
def is_stressful(subj):
? ? pat = '|'.join('(' + '+[^A-Za-z]*'.join(p) + ')' for p in ('help', 'asap', 'urgent'))
? ? return subj.isupper() or re.search(pat, subj.lower()) is not None or subj.endswith('!!!')