- 目标:提取字符串中长度5-7的数字
- python脚本hive样式:
import datetime data_dic = { 'table_name':'table_name', 'data_table_name':'data_table_name', 'data_time':int(datetime.date.today().strftime('%Y%m%d'))-1 } sql = """ insert table {table_name} ( id adtag ) select id ,case when regexp_instr(adtag,'\\\\d{{5,7}}',1,1,0)>0 then regexp_extract(adtag,'(\\\\d{{5,7}})',1) else adtag end as adtag from {data_table_name} where ftime = {data_time} """.format(**data_dic)
正常来说,正则pat里面只需要传入’\d{5,7}‘就可以了,一个斜杠最后用了四个斜杠才生效,转化是这样的:
第一层:python字符串转译:\\——\
第二层:sql字符串转译:\——
这样就四个斜杠最后变成了两个斜杠(python转义),两个斜杠再变成一个斜杠(sql转义);另外一个问题,python字符串format方法转译问题,最后用了双’{}’
本文深入探讨了使用Hive SQL与Python正则表达式从数据中提取特定长度数字的方法。通过详细解释Python字符串转义、SQL字符串转义及Python字符串format方法的复杂性,为读者提供了实践案例。
7124

被折叠的 条评论
为什么被折叠?



