python脚本使用hive正则表达式斜杠问题

本文深入探讨了使用Hive SQL与Python正则表达式从数据中提取特定长度数字的方法。通过详细解释Python字符串转义、SQL字符串转义及Python字符串format方法的复杂性,为读者提供了实践案例。
  • 目标:提取字符串中长度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方法转译问题,最后用了双’{}’

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值