J'essaie d'imprimer la dernière partie d'une chaîne avant un certain caractère.
Je ne sais pas trop s'il faut utiliser la méthode string .split (), le découpage en chaîne ou peut-être autre chose.
Voici un code qui ne fonctionne pas, mais je pense montre la logique:
x = 'http://test.com/lalala-134'
print x['-':0] # beginning at the end of the string, return everything before '-'
Notez que la taille du nombre à la fin variera donc je ne peux pas définir un nombre exact à partir de la fin de la chaîne.
Vous recherchez str.rsplit()
, avec une limite:
print x.rsplit('-', 1)[0]
.rsplit()
recherche la chaîne de fractionnement à partir de la fin de la chaîne d'entrée et le deuxième argument limite le nombre de fois qu'il sera divisé en une seule fois.
Une autre option consiste à utiliser str.rpartition()
, qui ne sera jamais divisé qu'une seule fois:
print x.rpartition('-')[0]
str.rpartition()
est également la méthode la plus rapide pour diviser une seule fois; si vous devez diviser plusieurs fois, vous ne pouvez utiliser que str.rsplit()
.
Démo:
>>> x = 'http://test.com/lalala-134'
>>> print x.rsplit('-', 1)[0]
http://test.com/lalala
>>> 'something-with-a-lot-of-dashes'.rsplit('-', 1)[0]
'something-with-a-lot-of'
et la même chose avec str.rpartition()
>>> print x.rpartition('-')[0]
http://test.com/lalala
>>> 'something-with-a-lot-of-dashes'.rpartition('-')[0]
'something-with-a-lot-of'
La différence entresplitetpartitionest scindée retourne la liste sans délimiteur et sera scindée à chaque fois qu'il obtiendra un délimiteur dans la chaîne i.e.
x = 'http://test.com/lalala-134-431'
a,b,c = x.split(-)
print(a)
"http://test.com/lalala"
print(b)
"134"
print(c)
"431"
etpartitiondivisera la chaîne avec seulement first delimiter et ne renverra que 3 valeurs dans la liste
x = 'http://test.com/lalala-134-431'
a,b,c = x.partition('-')
print(a)
"http://test.com/lalala"
print(b)
"-"
print(c)
"134-431"
donc, comme vous voulez la dernière valeur, vous pouvez utiliserrpartitioncela fonctionne de la même manière mais le délimiteur sera trouvé à partir de la fin de la chaîne
x = 'http://test.com/lalala-134-431'
a,b,c = x.partition('-')
print(a)
"http://test.com/lalala-134"
print(b)
"-"
print(c)
"431"