如何在字符串中去除图案?

时间:2018-06-15 14:39:29

标签: python string

我有以下字符串。

a = "/root/LOAD/LOGS/2018-06-15_13:54/"

如何获得输出:

"/root/LOAD/LOGS/"

3 个答案:

答案 0 :(得分:6)

您可以根据需要使用os.path.dirname多次上传目录

>>> import os
>>> a = "/root/LOAD/LOGS/2018-06-15_13:54/"
>>> os.path.dirname(a)
'/root/LOAD/LOGS/2018-06-15_13:54'
>>> os.path.dirname(os.path.dirname(a))
'/root/LOAD/LOGS'

如果要向上移动已知数量的目录,这很容易包装在辅助函数中

def parent_dir(path, n):
    if n > 1:
        return parent_dir(os.path.dirname(path), n-1)
    return os.path.dirname(path)

实施例

>>> parent_dir(a, 2)
'/root/LOAD/LOGS'

答案 1 :(得分:0)

有几种方法,我个人会使用re(import re)模块。但是也可以在没有附加模块的情况下提取目录。这取决于你是否要查看斜杠(子目录)或字符数是否足够(如果目录名称没有改变)。

>>> a = "/root/LOAD/LOGS/2018-06-15_13:54/"    

>>> "/".join(a.split("/")[:-2])    # from right side
'/root/LOAD/LOGS'

>>> "/".join(a.split("/")[:4])     # from left side
'/root/LOAD/LOGS'

>>> a[:15]
'/root/LOAD/LOGS'

答案 2 :(得分:0)

就个人而言,我更喜欢pathlib模块。

from pathlib import Path
path = Path("/root/LOAD/LOGS/2018-06-15_13:54/")
parent = path.parent  # == Path("/root/LOAD/LOGS/")
parent_as_string = str(parent)  # == "/root/LOAD/LOGS/"

这也是可重复的

parent_of_parent = path.parent.parent  # == Path('/root/LOAD')