Quel est l'idiome recommandé Python pour fractionner une chaîne lors de l'occurrence last du délimiteur de la chaîne? exemple:
# instead of regular split
>> s = "a,b,c,d"
>> s.split(",")
>> ['a', 'b', 'c', 'd']
# ..split only on last occurrence of ',' in string:
>>> s.mysplit(s, -1)
>>> ['a,b,c', 'd']
mysplit
prend un deuxième argument qui correspond à l'occurrence du délimiteur à scinder. Comme dans l'indexation de liste normale, -1
signifie le dernier de la fin. Comment cela peut-il être fait?
Utilisez .rsplit()
ou .rpartition()
à la place:
s.rsplit(',', 1)
s.rpartition(',')
str.rsplit()
vous permet de spécifier le nombre de fois à scinder, alors que str.rpartition()
ne scinde qu'une seule fois mais retourne toujours un nombre fixe d'éléments (préfixe, délimiteur et suffixe) et est plus rapide pour le cas à fractionnement simple.
Démo:
>>> s = "a,b,c,d"
>>> s.rsplit(',', 1)
['a,b,c', 'd']
>>> s.rsplit(',', 2)
['a,b', 'c', 'd']
>>> s.rpartition(',')
('a,b,c', ',', 'd')
Les deux méthodes commencent à se séparer du côté droit de la chaîne; en donnant à str.rsplit()
un maximum comme second argument, vous pouvez diviser uniquement les occurrences les plus à droite.
Vous pouvez utiliser rsplit
string.rsplit('delimeter',1)[1]
Pour obtenir la chaîne de l'envers.
Je viens de faire ça pour le plaisir
>>> s = 'a,b,c,d'
>>> [item[::-1] for item in s[::-1].split(',', 1)][::-1]
['a,b,c', 'd']