Python 如何使用正则表达式提取子字符串

Python 如何使用正则表达式提取子字符串,python,regex,pandas,Python,Regex,Pandas,我的SKU如下所示: SBC225SLB32 SBA2161BRB30 PBA632AS32 其中,前3-4个字符为A-Z,必须提取,以下3-4个数字为[0-9],也必须提取 第一次,我尝试了\D{3,4},第二次,我尝试了\D{3,4} 但是当使用pandas的.str.extract('\D{3,4}')时,我得到了一个模式不包含捕获组的错误。 有更好的方法吗?您传递给的正则表达式模式不包含捕获组,而该方法至少需要一个捕获组 在您的情况下,在两个捕获组的帮助下,一次捕获两个值更方便。你可以

我的SKU如下所示:

SBC225SLB32
SBA2161BRB30
PBA632AS32
其中,前3-4个字符为A-Z,必须提取,以下3-4个数字为[0-9],也必须提取

第一次,我尝试了
\D{3,4}
,第二次,我尝试了
\D{3,4}

但是当使用pandas的
.str.extract('\D{3,4}')
时,我得到了一个
模式不包含捕获组的错误。

有更好的方法吗?

您传递给的正则表达式模式不包含捕获组,而该方法至少需要一个捕获组

在您的情况下,在两个捕获组的帮助下,一次捕获两个值更方便。你可以用

df[['Code1','Code2']]=df['SKU'].str.extract(r'^([A-Z]{3,4})([0-9]{3,4}),expand=False)
看。图案详情:

  • ^
    -字符串的开头
  • ([A-Z]{3,4})
    -捕获第1组:三到四个大写ASCII字母
  • ([0-9]{3,4})
    -捕获组2:三到四个大写ASCII数字

对不起,我本应该明确说明它不起作用。我对问题进行了轻微的编辑以显示这一点。对于那些以“需要更多关注”结束的人:问题包含所有必需的细节,并且只关注一个问题-没有理由结束问题。太好了!我没想到你可以同时提取这两个数据,并将它们放在一行数据帧中!