在Python中删除用点号分隔的字符串的最后一部分

发布于 2021-01-29 16:33:41

如何以优雅的方式转换字符串,例如:

'test.test1.test2'
'test.test3.test4'

变成这样的字符串:

'test.test1'
'test.test3'
关注者
0
被浏览
166
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    此处不需要正则表达式。

    用途str.rsplit()

    output = inputstr.rsplit('.', 1)[0]
    

    str.rpartition()

    output = inputstr.rpartition('.')[0]
    

    str.rpartition() 是两者中较快的一个,但您需要使用Python 2.5或更高版本。

    演示:

    >>> 'test.test1.test2'.rsplit('.', 1)[0]
    'test.test1'
    >>> 'test.test1.test2'.rpartition('.')[0]
    'test.test1'
    >>> 'test.test3.test4'.rsplit('.', 1)[0]
    'test.test3'
    >>> 'test.test3.test4'.rpartition('.')[0]
    'test.test3'
    

    与一百万次运行的时间比较:

    >>> from timeit import timeit
    >>> timeit("s.rsplit('.', 1)[0]", "s = 'test.test1.test2'")
    0.5848979949951172
    >>> timeit("s.rpartition('.')[0]", "s = 'test.test1.test2'")
    0.27417516708374023
    

    在这里您可以以100万个str.rpartition()的价格运行200万个呼叫str.rsplit()



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看