PySpark中无需硬编码提取括号内字符串的实现方法
在PySpark中提取括号内内容(避免硬编码)
需求:当tx字段的字符串格式为Reach % (XXX)时,无需硬编码具体的XXX内容,直接提取括号内的文本。
可以使用PySpark的regexp_extract函数,通过正则表达式捕获组实现通用提取:
import pyspark.sql.functions as F # 提取"Reach % (...)"格式字符串中括号内的内容 df = df.withColumn('tx', F.regexp_extract('tx', r'Reach % \((.*?)\)', 1))
说明:
- 正则表达式
r'Reach % \((.*?)\)'中,\(和\)用来匹配实际的括号(括号在正则中属于特殊字符,需转义);(.*?)是非贪婪捕获组,会匹配括号内的任意内容直到遇到右括号。 regexp_extract的第三个参数1表示提取第一个捕获组的内容,也就是括号包裹的文本。- 如果原字符串不符合
Reach % (...)的格式,该函数会返回空字符串,不会干扰其他格式的字段值。
内容的提问来源于stack exchange,提问作者user19814628
相关产品推荐
相关产品推荐

