【问题标题】:How to replace multiple forward slashes in a directory by a single slash?如何用单个斜杠替换目录中的多个正斜杠?
【发布时间】:2021-02-04 02:36:40
【问题描述】:

我的路径:

'/home//user////document/test.jpg'

我希望将其转换为:

'/home/user/document/test.jpg'

如何做到这一点?

【问题讨论】:

    标签: python string path


    【解决方案1】:

    从您的字符串中实例化 pathlib.Path 对象将自动为您删除多余的斜杠:

    from pathlib import Path
    
    path = Path('/home//user////document/test.jpg')
    print(path)
    # /home/user/document/test.jpg
    

    【讨论】:

      【解决方案2】:

      这个解决方案使用正则表达式非常简单。
      您可以使用 Python 标准库的“re”模块。

      import re
      
      old_path = '/home//user////document/test.jpg'
      converted_path = re.sub('/+', '/', old_path)
      

      我很抱歉不能说流利的英语;)

      【讨论】:

      • 虽然您的标识符更好,但 Piyush Sambi 已经给出了这个解决方案。所以更好地评论这个答案。
      【解决方案3】:

      使用os.path.abspathnormpath 规范化路径:

      >>> import os.path
      >>> os.path.abspath('/home//user////document/test.jpg')
      '/home/user/document/test.jpg'
      

      【讨论】:

        【解决方案4】:

        解决方案:
        此代码 sn-p 应该可以解决您的问题:

        import re
        x = '/home//user////document/test.jpg'
        re.sub('/+','/', x)
        

        输出:

        '/home/user/document/test.jpg'
        

        【讨论】:

          【解决方案5】:

          我认为最简单的方法是将'//' 替换为'/' 两次:

          a = '/home//user////document/test.jpg'
          
          a.replace('//', '/').replace('//', '/')
          

          【讨论】:

          • 如果你有//////呢?
          • @deceze 如果是这样的话,这是行不通的。我没有将这个问题解释为需要使用任意数量的斜线......
          猜你喜欢
          • 2023-03-16
          • 1970-01-01
          • 2012-05-17
          • 2020-01-17
          • 1970-01-01
          • 1970-01-01
          • 2018-08-30
          • 2019-09-18
          • 1970-01-01
          相关资源
          最近更新 更多