使用Python提取字符串中字符前的数字

使用Python提取字符串中字符前的数字,python,regex,string,Python,Regex,String,我试图在一系列字符串中提取字符“m”之前的数字。字符串可能如下所示: "107S33M15H" "33M100S" "12M100H33M" 所以基本上会有一组由不同字符分隔的数字,“M”可能会出现不止一次。对于这里的示例,我希望我的代码返回: 33 33 12,33 #doesn't matter what deliminator to use here 我能想到的一种方法是将字符串除以“M”,然后找到纯数字项,但我怀疑还有更好的方法。非常感谢您的帮助。您可以使用一个简单的(\d+)M正则

我试图在一系列字符串中提取字符“m”之前的数字。字符串可能如下所示:

"107S33M15H"
"33M100S"
"12M100H33M"
所以基本上会有一组由不同字符分隔的数字,“M”可能会出现不止一次。对于这里的示例,我希望我的代码返回:

33
33
12,33 #doesn't matter what deliminator to use here

我能想到的一种方法是将字符串除以“M”,然后找到纯数字项,但我怀疑还有更好的方法。非常感谢您的帮助。

您可以使用一个简单的
(\d+)M
正则表达式(1+个数字,后跟
M
,其中数字被捕获到捕获组中)和
re.findall

见:


这里有一个

您可以使用rpartition来完成这项工作

s = '107S33M15H'    
prefix = s.rpartition('M')[0]

我用它向数据框中添加了一个新列。这是代码:df['new_col']=df.old_col.str.rpartition('b')[2]#其中b是要删除的字母,2是新列中所需字符的“rpartition”数组中的位置。谢谢你的密码。非常有用。
s = '107S33M15H'    
prefix = s.rpartition('M')[0]