J'ai un chemin de fichier sous forme de chaîne et essayant de supprimer le dernier '/' de la fin.
my_file_path = '/home/ro/A_Python_Scripts/flask-auto/myDirectory/scarlett Johanson/1448543562.17.jpg/'
Je l'ai essayé avec regex, mais il continue à supprimer tous les '/'. Existe-t-il un moyen plus simple de supprimer le dernier caractère sans regex?
Comme vous le dites, vous n'avez pas besoin d'utiliser une expression régulière pour cela. Vous pouvez utiliser rstrip
.
my_file_path = my_file_path.rstrip('/')
S'il y a plus d'un /
à la fin, cela les supprimera tous, par exemple. '/file.jpg//'
-> '/file.jpg'
. De votre question, je suppose que ça irait.
Le plus simple est
comme l'a souligné @greggo
string="mystring";
string[:-1]
Vous pouvez utiliser String.rstrip
.
result = string.rstrip('/')
Pour un chemin, utilisez os.path.abspath
import os
print os.path.abspath(my_file_path)
La méthode la plus simple consiste à utiliser slice . Si x est votre variable chaîne, x [: - 1] renverra la variable chaîne sans le dernier caractère . (BTW, x [-1] est le dernier caractère de la variable chaîne) Vous recherchez
my_file_path = '/ home/ro/A_Python_Scripts/flask-auto/monRépertoire/scarlett Johanson/1448543562.17.jpg /' mon_fichier_fichier = mon_fichier_fichier [: - 1]
Nul besoin d’utiliser regex
, si nécessaire, essayez - Utilisez le modèle r'(/)(?=$)'
qui capture le dernier /
et remplacez-le par r''
, c’est-à-dire un caractère vide.
>>>re.sub(r'(/)(?=$)',r'','/home/ro/A_Python_Scripts/flask-auto/myDirectory/scarlett Johanson/1448543562.17.jpg/')
>>>'/home/ro/A_Python_Scripts/flask-auto/myDirectory/scarlett Johanson/1448543562.17.jpg'
Réponse à la question: pour supprimer le dernier caractère, utilisez simplement: string = string[:-1]
.
Si vous souhaitez supprimer le dernier '\' s'il en existe un (ou s'il y en a plusieurs):
while string[-1]=='\\':
string = string[:-1]
Si c'est un chemin, utilisez les fonctions os.path
:
dir = "dir1\\dir2\\file.jpg\\" #I'm using windows by the way
os.path.dirname(dir)
bien que j'ajoute une barre oblique à la fin pour éviter de rater le nom du fichier s'il n'y a pas de barre oblique à la fin de la chaîne d'origine
dir = "dir1\\dir2\\file.jpg"
os.path.dirname(dir + "\\")
Lorsque vous utilisez abspath, (si le chemin n'est pas absolu, je suppose), le répertoire de travail en cours sera ajouté au chemin.
os.path.abspath(dir)
Pour supprimer le dernier caractère, utilisez simplement une tranche: my_file_path[:-1]
. Si vous souhaitez uniquement supprimer un jeu de caractères spécifique, utilisez my_file_path.rstrip('/')
. Si vous voyez la chaîne sous la forme d'un chemin d'accès, l'opération est os.path.dirname . Si le chemin est en fait un nom de fichier, je me demande plutôt d'où vient la barre oblique supplémentaire.