我有一个捕获代码及其描述的数据框,我们需要从描述中提取数量。请有人帮助使用正则表达式提取数量,就像数字后跟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)
您可以使用
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)
-可选的K
和G
或可选的M
然后是L
\b
-字边界。 请参见regex demo。