I want to extract the numbers only from before the “am” and “pm”. If “pm” not avalilable means then only from before “am”.
para = ["who done this on 23 october to 26th october from 2 am to 10am"] def time_ext(para): vals = [] samp_str = '' for i in t: if i.isnumeric() == True: samp_str = samp_str+i else: if samp_str == '': pass else: vals.append(samp_str) samp_str = '' if len(vals) > 0: vals = [int(i) for i in vals] else: pass return vals print(time_ext(para)) # my output is = [23, 2] # Expecting output is = [2, 10]
Advertisement
Answer
para = ["who done this on 23 october to 26th october from 2 am to 10am"] def time_ext(t): vals = [] for line in t: words = line.split() for i in range(len(words)): word = words[i] found = False if word.endswith("am") or word.endswith("pm"): word = word[:-2] found = True elif ((i + 1) < len(words)) and (words[i + 1] in ("am", "pm")): found = True if found and word.isnumeric(): vals.append(word) return vals print(time_ext(para))