【问题标题】:python find last in stringpython在字符串中查找最后一个
【发布时间】:2011-04-16 12:14:29
【问题描述】:

我正在寻找一种简单的方法来识别一个字符串在另一个字符串中的最后位置......例如。如果我有:file = C:\Users\User\Desktop\go.py
我想裁剪这个以便file = go.py

通常我必须通过循环 + 查找语句运行 C:\Users\User\Desktop\go.py,并且 Evey 遇到 \ 时会问...是字符串中的最后一个 \ 吗? ...一旦我找到最后一个\,我就会file = file[last\:len(file)]
我很想知道是否有更快更整洁的方法来做到这一点..最好没有循环。
类似文件 = [file('\',last):len(file)]
如果没有像我上面显示的那样......那么我们可以以某种方式将循环放在[:] 内。类似file = [for i in ...:len(file)]

谢谢:)

【问题讨论】:

    标签: python string find


    【解决方案1】:

    如果只是关于文件路径,可以使用os.path.basename

    >>> import os
    >>> os.path.basename(file)
    'go.py'
    

    或者,如果您不在 Windows 上运行代码,则必须使用 ntpath 而不是 os.path

    【讨论】:

    • 处理文件路径时,这是最好的解决方案。但仅作记录:python中还有一个rfind方法:docs.python.org/library/stdtypes.html#str.rfind
    • 正如我所说:rfind 看起来不太适合文件路径,os.path 解决方案是最好的。
    【解决方案2】:

    您可以将字符串拆分为一个列表,然后获取列表的最后一个索引。

    示例:

    >>> file = 'C:\Users\User\Desktop\go.py'
    >>> print(file.split('\\')[-1])
    go.py
    

    【讨论】:

    • 其他的答案很好......但我喜欢你的,因为它有更广泛的应用......不仅在路径字符串中。
    • 谢谢 :) 这是一个不错的、干净的选项,不需要添加依赖项。我认为,如果您不仅要在这种情况下处理操作系统,那么添加额外的导入将是更好的选择。
    • 你不应该分割字符串然后只取其中的一部分。这既慢又令人困惑。一个更简单的方法是 x[x.rfind('\\')+1:] BTW,您可能希望避免使用名称 file 作为变量名,因为它会影响内置文件对象。
    【解决方案3】:

    我同意 Felix 关于文件路径应使用os.path.basename 处理的观点。不过,您可能想看看内置的字符串函数rpartition

    >>> file = 'C:\Users\User\Desktop\go.py'
    >>> before, separator, after = file.rpartition('\\')
    >>> before
    'C:\\Users\\User\\Desktop'
    >>> separator
    '\\'
    >>> after
    'go.py'
    

    还有 rfind 函数,它可以为您提供子字符串的最后一个索引。

    >>> file.rfind('\\')
    21
    

    我意识到我参加聚会有点晚了,但因为这是搜索例如在 Google 上“find last in str python”,我认为它可能会帮助某人添加此信息。

    【讨论】:

      【解决方案4】:

      对于通用案例(正如 OP 所说,他们喜欢拆分解决方案的泛化)......尝试 rfind(str) 函数。

      "myproject-version2.4.5.customext.zip".rfind(".")
      

      编辑:抱歉,我没有意识到这个帖子有多老...:-/

      【讨论】:

        【解决方案5】:

        对于您想要使用os.path 的路径名操作。

        对于这个特定问题,您想使用os.path.basename(path) 函数,该函数将返回路径的最后一个组成部分,或者如果路径以斜杠结尾(即文件夹的路径而不是文件的路径)则返回空字符串.

        import os.path
        
        print os.path.basename("C:\Users\User\Desktop\go.py")
        

        给予:

        go.py

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-19
          • 1970-01-01
          • 1970-01-01
          • 2015-03-27
          • 1970-01-01
          • 2011-07-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多