J'utilise Python 3 et je souhaite traduire mes noms de fichiers sans numéros. La fonction de traduction ne semble pas fonctionner dans Python 3. Comment puis-je traduire les noms de fichiers sans numéros?
Ceci est le bloc de code qui ne fonctionne pas:
file_name = "123hello.jpg"
file_name.translate(None, "0123456789")
Merci
str.translate
est toujours là, l’interface vient de changer un peu:
>>> table = str.maketrans(dict.fromkeys('0123456789'))
>>> '123hello.jpg'.translate(table)
'hello.jpg'
.translate
prend une table de traduction:
Retourne une copie de la chaîne S dans laquelle chaque caractère a été mappé dans la table de traduction donnée. La table doit implémenter la recherche/l'indexation via getitem, par exemple un dictionnaire ou une liste, mappant des ordinaux Unicode sur des ordinaux Unicode, des chaînes ou Aucune. Si cette opération soulève LookupError, le caractère reste inchangé. Les caractères associés à Aucun sont supprimés.
Donc, vous pouvez faire quelque chose comme:
>>> file_name = "123hello.jpg"
>>> file_name.translate({ord(c):'' for c in "1234567890"})
'hello.jpg'
>>>
J'utilise ver3.6.1 et la traduction n'a pas fonctionné. Qu'est-ce qui a fonctionné, c'est la méthode strip () comme suit:
file_name = 123hello.jpg
file_name.strip('123')
Supprimer uniquement les numéros de gauche
new_name = str.lstrip('1234567890')
Supprimer uniquement les numéros de droite
new_name = str.rstrip('123456780')
Supprimer le numéro à gauche et à droite
new_name = str.strip('1234567890')
Supprimer tous les chiffres
new_name = str.translate(str.maketrans('', '', '1234567890'))