Supprimer les x premiers caractères de la chaîne?


116

Comment peut-on supprimer les x premiers caractères d'une chaîne? Par exemple, si l'on avait une chaîne lipsum, comment supprimeraient-ils les 3 premiers caractères et obtiendraient-ils un résultat sum?


5
meilleur exemple si le nombre de caractères supprimés n'était pas égal au nombre de caractères à rester. par exemple"lipsumm"[3:] == "summ"
Scott Pelak

Réponses:


213
>>> text = 'lipsum'
>>> text[3:]
'sum'

Voir la documentation officielle sur les chaînes pour plus d'informations et cette réponse SO pour un résumé concis de la notation.


16

Une autre façon (en fonction de vos besoins réels): Si vous souhaitez afficher les n premiers caractères et enregistrer à la fois les caractères sautés et la chaîne modifiée:

s = 'lipsum'
n = 3
a, s = s[:n], s[n:]
print(a)
# lip
print(s)
# sum

3
Je suppose que c'est métaphoriquement "sauté", mais en fait il ne s'agit que de 2 tranches différentes, pas de véritable éclatement
jamylak

9
>>> x = 'lipsum'
>>> x.replace(x[:3], '')
'sum'

11
Notez que cela est plus long dans le code et prendra également plus de temps puisque vous devez rechercher la sous-chaîne avant de la remplacer. En outre: >>> x = 'liplip' >>> x.replace(x[:3], '') ''. Bien sûr, vous pouvez résoudre ce problème en ayant le troisième paramètre (count) = 1, mais cela prendrait encore plus de temps.
jamylak

nah c'est lié à votre réponse donc il appartient ici. Vous pouvez ajouter count = 1 au vôtre pour qu'il fonctionne toujours btw
jamylak

4

Utilisez del.

Exemple:

>>> text = 'lipsum'
>>> l = list(text)
>>> del l[3:]
>>> ''.join(l)
'sum'

1
Cela ne fonctionne pas comme vous le pensez text = 'liplip' >>> text.lstrip(text[:3]) ''car pour l'un, l' argument chars n'est pas un préfixe; au contraire, toutes les combinaisons de ses valeurs sont supprimées:str.lstrip([chars])
jamylak

@jamylak Edited mine
U10-Forward

1
Aucune des solutions ne fonctionne, par exemple. pour 'liplip'. Dans le secondTypeError: 'str' object does not support item deletion
jamylak

@jamylak modifié à nouveau
U10-Forward

@jamylak ça marche, maintenant, si oui, avez-vous besoin de voter contre?
U10-Forward le

2

Exemple pour afficher les 3 derniers chiffres du numéro de compte.

x = '1234567890'   
x.replace(x[:7], '')

o/p: '890'

Cela a le même problème que la réponse de tkbx
jamylak

par exemple. >>> x = '12345678901234567890' >>> x.replace(x[:7], 'xxxxxxx') 'xxxxxxx890xxxxxxx890'
jamylak

De plus, cela ne répond même pas à la question, vous remplacez les caractères par des xs au lieu de les supprimer
jamylak
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.