Как раздеть рисунок в струне?

1

У меня ниже String.

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

Как я могу получить результат:

"/root/LOAD/LOGS/"
Теги:
string

3 ответа

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'
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')
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'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню