我们正在接收数据,如tx=Reach %(YouTube),我们只需要Youtube从那。我们怎么能删除没有硬编码。对于硬编码,我使用如果您的浏览器没有自动跳转,请点击这里.但我们不需要硬编码像youtube或等,我们如何应用检查一样,有达到%,然后删除所有除了字符串内括号在pyspark
x33g5p2x1#
df = spark.createDataFrame( [("tx=Reach % (YouTube)", )], schema=['col1'] ) df.show(10, False) +--------------------+ |col1 | +--------------------+ |tx=Reach % (YouTube)| +--------------------+ df.select(func.regexp_extract(func.col('col1'), '\((.*?)\)', 1).alias('val')).show(10, False) +-------+ |val | +-------+ |YouTube| +-------+
5n0oy7gb2#
可以使用regexp_extract代替regexp_replace
regexp_extract
regexp_replace
df.withColumn("tx", F.regexp_extract(F.col("tx"), r"\(([\w]+)\)", 1))
\(
(
\)
)
[\w]+
[a-zA-Z0-9_]+
注意这只会提取单词字符。如果你想提取括号之间的任何内容,你可以使用.*?而不是[\w]+。
.*?
2条答案
按热度按时间x33g5p2x1#
5n0oy7gb2#
可以使用
regexp_extract
代替regexp_replace
\(
就是(
\)
就是)
[\w]+
是一个或多个单词字符,如[a-zA-Z0-9_]+
。注意这只会提取单词字符。如果你想提取括号之间的任何内容,你可以使用
.*?
而不是[\w]+
。