【问题标题】:Extract Number before a Character in a String Using Python使用 Python 提取字符串中字符前的数字
【发布时间】:2016-07-10 02:39:22
【问题描述】:

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

"107S33M15H"
"33M100S"
"12M100H33M"

所以基本上会有一组由不同字符分隔的数字,并且“M”可能会出现不止一次。对于此处的示例,我希望我的代码返回:

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

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

【问题讨论】:

    标签: python regex string


    【解决方案1】:

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

    IDEONE demo:

    import re
    s = "107S33M15H\n33M100S\n12M100H33M"
    print(re.findall(r"(\d+)M", s))
    

    这是regex demo

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我用它在我的数据框中添加了一个新列。代码如下: df['new_col'] = df.old_col.str.rpartition('b')[2] # 其中 b 是要删除的字母,2 是字符在 'rpartition' 数组中的位置你想在新列中。感谢您的代码。非常有用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多