【问题标题】:Select last chars of string until whitespace in Python [duplicate]在Python中选择字符串的最后一个字符直到空格[重复]
【发布时间】:2013-10-11 03:17:19
【问题描述】:

是否有任何有效的方法来选择字符串的最后一个字符,直到 Python 中出现空格?

例如我有以下字符串:

str = 'Hello my name is John'

我想返回“约翰”。但如果 str 是:

str = 'Hello my name is Sally'

我想重播'Sally'

【问题讨论】:

    标签: python string


    【解决方案1】:

    只需在空格处拆分字符串,并获取数组的最后一个元素。或者使用rsplit()从头开始拆分:

    >>> st = 'Hello my name is John'
    >>> st.rsplit(' ', 1)
    ['Hello my name is', 'John']
    >>> 
    >>> st.rsplit(' ', 1)[1]
    'John'
    

    第二个参数指定要执行的split 的数量。既然你只想要最后一个元素,我们只需要拆分一次。

    根据 cmets 中的规定,您可以将 None 作为第一个参数传递,在这种情况下,将使用默认分隔符,即空格:

    >>> st.rsplit(None, 1)[-1]
    'John'
    

    使用-1 作为索引是安全的,以防您的字符串中没有空格。

    【讨论】:

    • 你可以用None代替' '。
    • 显式优于隐式!我相信' ' 绝对是rsplit 字符串的唯一可取方式。
    • @hexparrot 除了None 在任何空格(空格、\t、\n...)字符处分割,而' ' 仅在空格处分割。这个问题实际上是空格,所以 None 是一个更准确的答案......
    【解决方案2】:

    这真的取决于你所说的高效是什么意思,但我能想到的最简单(有效利用程序员时间)的方法是:

    str.split()[-1]
    

    这对于空字符串会失败,因此您需要检查一下。

    【讨论】:

      【解决方案3】:

      我想这就是你想要的:

      str[str.rfind(' ')+1:]

      这将创建一个从str 开始的子字符串,从最右边的空格之后的字符开始,一直到最后一个字符。

      这适用于所有字符串 - 空或其他(除非它不是字符串对象,例如 None 对象会抛出错误)

      【讨论】:

        猜你喜欢
        • 2021-02-09
        • 1970-01-01
        • 1970-01-01
        • 2016-11-15
        • 1970-01-01
        • 2021-12-01
        • 2014-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多