【问题标题】:How to extract number from end of the string如何从字符串末尾提取数字
【发布时间】:2015-03-12 09:25:39
【问题描述】:

我有一个类似"Titile Something/17" 的字符串。我需要剪掉"/NNN" 部分,它可以是3, 2, 1 数字编号,也可能不存在。

你是如何在 python 中做到这一点的?谢谢。

【问题讨论】:

  • 请提供您已经尝试过的示例
  • 交易是您向我们展示您尝试过的内容和代码以及您将如何解决问题,所以不是代码编写服务
  • @EdChum 从未想过让人们为我编写代码,但代码示例 - 反馈非常有帮助。

标签: python regex string python-3.x


【解决方案1】:

这里不需要RegEx,只需使用内置的str.rindex函数和slicing,像这样

>>> data = "Titile Something/17"
>>> data[:data.rindex("/")]
'Titile Something'
>>> data[data.rindex("/") + 1:]
'17'

或者你可以使用str.rpartition,像这样

>>> data.rpartition('/')[0]
'Titile Something'
>>> data.rpartition('/')[2]
'17'
>>> 

注意:这将获得最后一个/ 之后的任何字符串。谨慎使用。

如果要确保拆分后的字符串实际上是数字,可以使用str.isdigit函数,像这样

>>> data[data.rindex("/") + 1:].isdigit()
True
>>> data.rpartition('/')[2].isdigit()
True

【讨论】:

    【解决方案2】:

    \d{0,3} 匹配从零到三位数。 $ 断言我们在一行的末尾。

    re.search(r'/\d{0,3}$', st).group()
    

    例子:

    >>> re.search(r'/\d{0,3}$', 'Titile Something/17').group()
    '/17'
    >>> re.search(r'/\d{0,3}$', 'Titile Something/1').group()
    '/1'
    

    【讨论】:

    • 不错,但不那么可读 :) thefourtheye 的示例更好,你觉得如何?
    • @DmitrijA Fourtheye 的示例也适用于 "Titile Something/foo" 输入。但我认为你想要最后一部分有零或最多三位数。
    • 是的,您在这里是正确的。但如果没有数字,也没有斜线。为此,我必须在调用.group() 之前检查结果不是None
    • 我认为您可以轻松检查re.search 是否返回匹配对象。
    【解决方案3】:
    data = "Titile Something/17"
    
    print data.split("/")[0]
    'Titile Something' 
    print data.split("/")[-1] #last part string after separator /
    '17'
    

    print data.split("/")[1] # next part after separator in this case this is the same
    '17'
    

    当您想将其添加到列表时,使用 strip() 删除换行符“\n”

    print data.split("/")[-1].strip()
    '17'
    

    ~

    【讨论】:

    • 感谢您的意见和欢迎。但是split() 返回一个由 / 分割的项目数组,这不是 100% 匹配我的任务。
    【解决方案4】:

    我需要删掉“/NNN”

    x = "Titile Something/17"
    print re.sub(r"/.*$","",x)   #cuts the part after /
    print re.sub(r"^.*?/","",x)  #cuts the part before /
    

    使用re.sub,您可以随心所欲。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 2012-10-21
      • 2023-02-23
      • 2018-04-20
      • 2010-11-05
      相关资源
      最近更新 更多