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.
3 Réponses :
Vous pouvez utiliser la méthode str.rsplit avec un maxsplit de 1 à la place:
file_path.rsplit('/', maxsplit=1)[0]
p >
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] .
Oui :
>>> 'a/b/c/d'.rsplit('/', 1)
['a/b/c', 'd']
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'
Merci, c'est bon à savoir, mais pour mon cas d'utilisation, j'obtiens un chemin fixe en entrée.
Je ne comprends pas pourquoi quelqu'un -1 ceci?