【问题标题】:how to handle '../' in python?如何在 python 中处理'../'?
【发布时间】:2011-05-09 12:59:33
【问题描述】:

我需要从网址中删除../something/

例如。从../first/bit/of/the/url.html 中剥离../first/,其中first 可以是任何东西。

实现这一目标的最佳方法是什么?

谢谢:)

【问题讨论】:

  • 你说的是路径还是 URL?
  • 你的意思是first可以是你事先知道的其他东西,还是你事先不知道的某个目录名?

标签: python string url path


【解决方案1】:

您可以在官方路径分隔符(os.sep,而不是 '/')处简单地拆分路径 两次,然后取最后一位:

>>> s = "../first/bit/of/the/path.html"
>>> s.split(os.sep, 2)[-1]
'bit/of/the/path.html'

这也比完全拆分路径并将其重新串在一起更有效。

请注意,当路径包含少于 3 个以上的路径元素时(例如,“file.html”生成“file.html”),此代码不会报错。如果您希望代码在路径不是预期形式时引发异常,您可以只要求其第三个元素(对于太短的路径不存在):

>>> s.split(os.sep, 2)[2]

这有助于检测一些细微的错误。

【讨论】:

    【解决方案2】:

    EOL 提供了一种不错且干净的方法,但是我无法抗拒提供正则表达式替代它:)

    >>> import re
    >>> m=re.search('^(\.{2}\/\w+/)(.*)$','../first/bit/of/the/path.html')
    >>> m.group(1)
    '../first/'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 2016-04-11
      • 2023-03-20
      相关资源
      最近更新 更多