1
votes

Fractionner la chaîne à l'aide du séparateur en sautant la première occurrence

Je divise une chaîne file_path ci-dessous, pour qu'elle renvoie "abc / def". Comme vous pouvez le voir, je divise par '/' puis je les rejoins en retour '/'.

file_path = 'abc/def/xyz.txt'
path_prefix = "/".join(file_path.split("/")[0:2])

Est-il possible de diviser la chaîne file_path par '/' mais en sautant la première occurrence de '/'? De cette façon, je n'ai pas à effectuer de jointure.


1 commentaires

Je ne comprends pas pourquoi quelqu'un -1 ceci?


3 Réponses :


1
votes

Vous pouvez utiliser la méthode str.rsplit avec un maxsplit de 1 à la place:

file_path.rsplit('/', maxsplit=1)[0]

p >


2 commentaires

que diriez-vous de sauter la dernière occurrence. Signifiant "abc / def / xyz.txt" devient "def / xyz.txt" Je n'ai rien trouvé à ce sujet dans l'API rsplit.


Pour cela, vous pouvez utiliser à la place file_path.split ('/', maxsplit = 1) [1] .



1
votes

Oui :

>>> 'a/b/c/d'.rsplit('/', 1)
['a/b/c', 'd']


0 commentaires

1
votes

Il existe de nombreuses façons de se tromper dans la division de chemin si vous essayez de le faire de manière généralisée ou portable. Vous pouvez envisager d'utiliser os.path plutôt que de rouler le vôtre. Par exemple:

import os.path
file_path = 'abc/def/xyz.txt'

os.path.dirname(file_path)
# 'abc/def'


1 commentaires

Merci, c'est bon à savoir, mais pour mon cas d'utilisation, j'obtiens un chemin fixe en entrée.