raw - string python
¿Cómo eliminar un prefijo de ruta en Python? (4)
Quería saber cuál es la función pitonica para esto:
Quiero eliminar todo antes del camino wa.
p = path.split(''/'')
counter = 0
while True:
if p[counter] == ''wa'':
break
counter += 1
path = ''/''+''/''.join(p[counter:])
Por ejemplo, quiero que ''/ book / html / wa / foo / bar /'' se convierta en ''/ wa / foo / bar /''
Para Python 3.4+, debe usar pathlib.PurePath.relative_to . De la documentación:
>>> 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''
Consulte también esta pregunta de para obtener más respuestas a su pregunta.
Una mejor respuesta sería usar os.path.relpath:
http://docs.python.org/2/library/os.path.html#os.path.relpath
>>> import os
>>> full_path = ''/book/html/wa/foo/bar/''
>>> print os.path.relpath(full_path, ''/book/html'')
''wa/foo/bar''
>>> path = ''/book/html/wa/foo/bar/''
>>> path[path.find(''/wa''):]
''/wa/foo/bar/''
import re
path = ''/book/html/wa/foo/bar/''
m = re.match(r''.*(/wa/[a-z/]+)'',path)
print m.group(1)