【问题标题】:How can I remove the last character of a string in python? [duplicate]如何在python中删除字符串的最后一个字符? [复制]
【发布时间】:2016-02-29 16:24:45
【问题描述】:

我有一个文件路径作为字符串,并试图从末尾删除最后一个“/”。

my_file_path = '/home/ro/A_Python_Scripts/flask-auto/myDirectory/scarlett Johanson/1448543562.17.jpg/'

我一直在尝试使用正则表达式,但它只是不断删除所有的“/”。有没有更简单的方法可以在不使用正则表达式的情况下删除最后一个字符?

【问题讨论】:

  • stringvar[:-1]

标签: python regex string


【解决方案1】:

最简单的方法是使用切片。 如果 x 是您的字符串变量,则 x[:-1] 将返回不带最后一个字符的字符串变量。 (顺便说一句,x[-1] 是字符串变量中的最后一个字符) 你正在寻找

my_file_path = '/home/ro/A_Python_Scripts/flask-auto/myDirectory/scarlett Johanson/1448543562.17.jpg/'
my_file_path = my_file_path[:-1]

【讨论】:

    【解决方案2】:

    回答问题:要删除最后一个字符,只需使用:string = string[:-1]

    如果你想删除最后一个'\',如果有一个(或者如果有多个):

    while string[-1]=='\\':
        string = string[:-1]
    

    如果是路径,则使用os.path 函数:

    dir = "dir1\\dir2\\file.jpg\\"   #I'm using windows by the way
    os.path.dirname(dir)
    

    虽然我会在最后“添加”一个斜杠以防止丢失文件名,以防原始字符串末尾没有斜杠:

    dir = "dir1\\dir2\\file.jpg"
    os.path.dirname(dir + "\\")
    

    当使用 abspath 时,(我猜如果路径不是绝对路径)会将当前工作目录添加到路径中。

    os.path.abspath(dir)
    

    【讨论】:

      【解决方案3】:

      不需要使用昂贵的regex,如果几乎不需要那么尝试- 使用r'(/)(?=$)' 模式,最后捕获/ 并替换为r'',即空白字符。

      >>>re.sub(r'(/)(?=$)',r'','/home/ro/A_Python_Scripts/flask-auto/myDirectory/scarlett Johanson/1448543562.17.jpg/')
      >>>'/home/ro/A_Python_Scripts/flask-auto/myDirectory/scarlett Johanson/1448543562.17.jpg'
      

      【讨论】:

        【解决方案4】:

        正如您所说,您不需要为此使用正则表达式。你可以使用rstrip

        my_file_path = my_file_path.rstrip('/')
        

        如果最后有多个/,这将删除所有这些,例如'/file.jpg//' -> '/file.jpg'。根据您的问题,我认为没问题。

        【讨论】:

          【解决方案5】:

          路径使用 os.path.abspath

          import os    
          print os.path.abspath(my_file_path)
          

          【讨论】:

          • os.path.abspath() 还会在 Windows 平台上将所有正斜杠转换为反斜杠,因此它可能并不总是正确的解决方案。
          • 除非真正的目标是有一个有效的路径(即使在 Windows 上)
          • 你是对的。这是一条路。出于某种原因,我认为这是一个 URL。 abspath() 适合这里。
          【解决方案6】:

          最简单的是

          正如@greggo 指出的那样

          string="mystring";
          string[:-1]
          

          【讨论】:

            【解决方案7】:

            要删除最后一个字符,只需使用切片:my_file_path[:-1]。如果您只想删除一组特定字符,请使用my_file_path.rstrip('/')。如果您将字符串视为文件路径,则操作为os.path.dirname。如果路径实际上是一个文件名,我很想知道额外的斜杠是从哪里来的。

            【讨论】:

              【解决方案8】:

              你可以使用String.rstrip

              result = string.rstrip('/')
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2018-04-29
                • 1970-01-01
                • 2019-04-23
                • 2012-07-07
                • 1970-01-01
                • 1970-01-01
                • 2021-12-11
                • 2011-11-18
                相关资源
                最近更新 更多