从pyspark中的字符串中删除()

x759pob2  于 2022-11-01  发布在  Spark
关注(0)|答案(2)|浏览(114)

我们正在接收数据,如tx=Reach %(YouTube),我们只需要Youtube从那。我们怎么能删除没有硬编码。对于硬编码,我使用
如果您的浏览器没有自动跳转,请点击这里.
但我们不需要硬编码像youtube或等,我们如何应用检查一样,有达到%,然后删除所有除了字符串内括号在pyspark

x33g5p2x

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|
+-------+
5n0oy7gb

5n0oy7gb2#

可以使用regexp_extract代替regexp_replace

df.withColumn("tx", F.regexp_extract(F.col("tx"), r"\(([\w]+)\)", 1))
  • \(就是(
  • \)就是)
  • [\w]+是一个或多个单词字符,如[a-zA-Z0-9_]+

注意这只会提取单词字符。如果你想提取括号之间的任何内容,你可以使用.*?而不是[\w]+

相关问题