使用正则表达式从pyspark中的描述中获取数量

问题描述 投票:0回答:1

我有一个捕获代码及其描述的数据框,我们需要从描述中提取数量。请有人帮助使用正则表达式提取数量,就像数字后跟G / KG / L / ML

df

code description
1    ABC CHILLIE POWDER 100G
2    DEF POWDER 200G
3    DIL PDWR POWDER 100G
4    RAIN HILL HERB SOU GREED 40G 2 1FRE
5    DEAR CHILLI 200G+COCO POWDER 330ML
6    DIL PDWR 10L POWDER

result_df

code description                                 qty
1    ABC CHILLIE POWDER 100G                     100G
2    DEF POWDER 200G                             200G
3    DIL PDWR POWDER 100G                        100G
4    RAIN HILL HERB SOU GREED 40G 2 1FRE         40G
5    DEAR CHILLI 200G+COCO POWDER 330ML          200G
6    DIL PDWR 10L POWDER                         10L

我正在使用

df.withColumn("qty", F.regex_extract(F.col("description"), "\dG", 1)
regex pyspark
1个回答
0
投票

您可以使用

df.withColumn("qty", F.regex_extract(F.col("description"), r"(\d+\s?(?:K?G|M?L))\b", 1)

(\d+\s?(?:K?G|M?L))\b模式匹配

  • (\d+\s?(?:K?G|M?L))-捕获组1:
    • \d+-1个以上的数字,
    • [\s?-1或0个空格,然后是
    • (?:K?G|M?L)-可选的KG或可选的M然后是L
  • \b-字边界。

请参见regex demo

© www.soinside.com 2019 - 2024. All rights reserved.