import re def title_data(title): lt = [] lt2 = [] str1 = lt.append(re.findall(r'\d+年\d+月\d+日', title)) str2 = lt.append(re.findall(r'(?<=新增本地新冠肺炎确诊病例)\d+', title)) str3 = lt.append(re.findall(r'(?<=新增境外输入)\d+', title)) str4 = lt.append(re.findall(r'(?<=治愈出院)\d+', title)) lt = if_no_data(lt) for i in lt: #转为字符串 lt2.append(i[0]) if lt2[0] == '0': lt2[0] = '2020年' + re.findall(r'\d+月\d+日', title)[0] return lt2 def if_no_data(lt): #将搜索不到的数据默认为0 for i in range(len(lt)): if lt[i] == []: lt[i] = ['0'] return lt
这里正则表达式用到了正向后行断言,(?<=表达式)
,即要求取出字符的前面要有能匹配的表达式。同样的还有正向现行断言(?<=表达式)
,即要求取出字符的后面要有能匹配的表达式。反向先行断言是(?!表达式)
,保证右边不出现某内容。(?<!表达式)
是反向后行断言。