您可以通过搜索带有"."的字母来搜索月、日和年:import re, datetime
months = {b:a for a, b in enumerate(['Jan.', 'Feb.', 'March', 'April', 'May', 'June', 'July', 'Aug.', 'Sept.', 'Oct.', 'Nov.', 'Dec.'], 1)}
def convert_date(d:str) -> str:
month, day, year = d.split()
return datetime.datetime(int(year), months[month], int(day))
data = ['Date first available at Amazon.ca: Nov. 23 2017', 'Date first available at Amazon.ca: March 27 2017', 'Date first available at Amazon.ca: March 6 2018']
new_data = [re.findall('[a-zA-Z]+\.*\s\d+\s\d+$', i) for i in data]
final_results = [convert_date(i[0]) for i in new_data if i]
输出:
^{pr2}$
时间安排:import time
def timeit(f):
_t1 = time.time()
_ = f()
print(f'{f.__name__}: completed in {time.time()-_t1}')
@timeit
def ajax1234():
new_data = [re.findall('[a-zA-Z]+\.*\s\d+\s\d+$', i) for i in data]
@timeit
def anthony():
t = [re.findall('(Jan.|Feb.|March|April|May|June|July|Aug.|Sept.|Oct.|Nov.|Dec.)[\d\s]+', i) for i in data]
输出:ajax1234: completed in 4.982948303222656e-05
anthony: completed in 3.314018249511719e-05