【问题标题】:Capture substring within a string - dynamically捕获字符串中的子字符串 - 动态
【发布时间】:2021-02-17 11:41:15
【问题描述】:

我有一个字符串:

ostring = "Ref('r1_featuring', ObjectId('5f475')"

我要做的是搜索字符串并检查它是否以Ref开头,如果是,则应删除字符串中的所有内容并保留子字符串5f475

我知道这可以使用简单的替换来完成,如下所示:

string = ostring.replace("Ref('r1_featuring', ObjectId('", '').replace("')", '')

但我不能这样做,因为它需要全部 动态 因为每次都会有不同的字符串。所以我需要这样做,它会搜索字符串并检查它是否以Ref开头,如果是,则获取字母数字值。

所需的输出:

5f475

任何帮助将不胜感激。

【问题讨论】:

    标签: python pandas substring


    【解决方案1】:

    喜欢吗?

    >>> import re
    >>> pattern = r"Ref.*'(.*)'\)$"
    
    >>> m = re.match(pattern, "Ref('r1_featuring', ObjectId('5f475')")
    >>> if m:
    ...     print(m.group(1))
    ...
    5f475
    
    # >= python3.8
    >>> if m := re.match(pattern, "Ref('r1_featuring', ObjectId('5f475')"):
    ...     print(m.group(1))
    ...
    5f475
    

    【讨论】:

    • 我已经包含了所需的输出,它应该只返回引号内的字母数字值
    • 第一个对我有用,只需将字符串 "Ref('r1_featuring', ObjectId('5f475')" 替换为变量 ostring 以使其动态
    【解决方案2】:

    无正则表达式的解决方案:)

    ostring = "Ref('r1_featuring', ObjectId('5f475')"
    
    if ostring.startswith("Ref"):
        desired_part = ostring.rpartition("('")[-1].rpartition("')")[0]
    

    str.rpartition

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 2020-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多