PySpark正则替换求助:将QTXXXUOE格式转为QT111XXX格式
解决QTXXXUOE格式编号的PySpark正则替换问题
直接使用以下代码即可实现需求:
df = df.withColumn('columnname', regexp_replace('columnname', r'^QT(\d{3})UOE$', r'QT111$1'))
代码说明:
- 正则表达式
^QT(\d{3})UOE$:^和$限定匹配整个字符串,确保只处理严格符合QTXXXUOE格式的内容(\d{3})是捕获分组,专门提取原编号里的三位数字(即你所说的XXX)
- 替换字符串
QT111$1:$1代表刚才捕获到的三位数字,这样就能把原格式替换成QT111加原三位数字的目标格式
之前代码失败的原因:
你之前用的^QT...UOE虽然能匹配到目标字符串,但替换时写的QT111...是直接输出三个点,而非引用匹配到的三位数字。另外...会匹配任意三个字符,用\d{3}能精准匹配数字,避免误处理不符合要求的内容。
内容的提问来源于stack exchange,提问作者newbee23
相关产品推荐
相关产品推荐

