Lorsque je remplace la chaîne, j'obtiens une erreur. Par exemple: ma chaîne est my_string = '15: 15 '. Je veux remplacer 15 qui est après les deux-points à 30 . Par exemple, j'ai besoin de '15: 30 '. Lorsque j'essaie de remplacer la chaîne, cela fonctionne bien pour toutes les autres valeurs, par exemple, '09: 15 ', '09: 20' .
J'ai essayé :
my_string = '15:15' my_new_string = my_string.replace(my_string[-2:], '30') my_string = '15:15' my_new_string = my_string.replace(my_string[-2:], '30')
Ce que j'attends est 15:30 mais ma sortie réelle est 30:30
3 Réponses :
my_new_string = my_string.replace (my_string [-2:], '30') vous obtient 30:30 , car vous remplacez toutes les occurrences de 15 -> 15:15 deviendra 30:30 .
Vous pouvez utiliser str.split et str.format pour obtenir votre nouvelle chaîne:
15:30
Impressions:
my_string = '15:15'
my_new_string = '{}:{}'.format(my_string.split(':')[0], '30')
print(my_new_string)
C'est le comportement attendu. Regardez ce que signifient les arguments pour str.replace () :
my_new_string = my_string[:-2] + '30'
Il ne remplace pas une sous-chaîne, mais plutôt toutes les occurrences de ce que vous passez comme premier paramètre.
En appelant my_string.replace (my_string [-2:], ' 30 ') vous appelez essentiellement '15: 15'.replace ('15', '30') - qui remplacera toutes les occurrences de "15" par "30" vous vous retrouverez donc avec '30:30' .
Si vous voulez remplacer les deux derniers caractères, inversez votre logique: gardez tout jusqu'aux deux derniers caractères et puis ajoutez la chaîne '30' que vous voulez à la fin:
replace(...)
S.replace(old, new[, count]) -> string
Return a copy of string S with all occurrences of substring
old replaced by new. If the optional argument count is
given, only the first count occurrences are replaced.
Lorsque vous utilisez my_string [-2:] , vous obtenez la chaîne '15: '. Ensuite, lorsque vous remplacez la fonction string.replace , toutes les occurrences de 15: par 3, vous donnant 3030.
À la place, vous pouvez utiliser my_string [2:] pour récupérez la chaîne «: 15» et remplacez-la par «: 30». Si vous n'incluez pas les deux-points, vous remplacerez les deux occurrences de 15 et obtiendrez '30: 30 '
my_new_string = my_string.replace(my_string[:-2], ':30')