Как убрать префикс пути в python?

Я хотел знать, что является питонической функцией для этого:

Я хочу удалить все до пути wa.

p = path.split('/')
counter = 0
while True:
    if p[counter] == 'wa':
        break
    counter += 1
path = '/'+'/'.join(p[counter:])

Например, я хочу, чтобы '/book/html/wa/foo/bar/' стал '/wa/foo/bar/'.

Ответ 2

>>> path = '/book/html/wa/foo/bar/'
>>> path[path.find('/wa'):]
'/wa/foo/bar/'

Ответ 3

Для Python 3.4+ вы должны использовать pathlib.PurePath.relative_to. Из документации:

>>> p = PurePosixPath('/etc/passwd')
>>> p.relative_to('/')
PurePosixPath('etc/passwd')

>>> p.relative_to('/etc')
PurePosixPath('passwd')

>>> p.relative_to('/usr')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pathlib.py", line 694, in relative_to
    .format(str(self), str(formatted)))
ValueError: '/etc/passwd' does not start with '/usr'

Также см. fooobar.com/questions/22494/... для получения дополнительных ответов на ваш вопрос.

Ответ 4

import re

path = '/book/html/wa/foo/bar/'
m = re.match(r'.*(/wa/[a-z/]+)',path)
print m.group(1)