web-dev-qa-db-fra.com

Tronquer une chaîne en python

Quelqu'un m'a donné une syntaxe pour tronquer une chaîne comme suit:

string = "My Text String"

print string [0:3] # This is just an example

Je ne sais pas comment cela s'appelle (la syntaxe de la chaîne [0: 3]), j'ai donc eu du mal à le rechercher sur Internet et à comprendre comment cela fonctionne. Jusqu'à présent, je pense que cela fonctionne comme ceci:

  • chaîne [0: 3] # renvoie les 3 premiers caractères de la chaîne
  • chaîne [0: -3] # renverra les 3 derniers caractères de la chaîne
  • chaîne [3: -3] # semble tronquer les 3 premiers caractères et les 3 derniers caractères
  • string [1: 0] # I renvoie 2 guillemets simples .... je ne sais pas trop ce que cela fait
  • chaîne [-1: 1] # identique à la dernière

Quoi qu'il en soit, il y a probablement quelques autres exemples que je peux ajouter, mais mon point est que je suis nouveau dans cette fonctionnalité et je me demande comment elle s'appelle et où je peux trouver plus d'informations à ce sujet. Je suis sûr que je manque juste une bonne référence quelque part.

Merci pour toutes suggestions, Mike

18
Mike

Cela s'appelle une tranche. De la documentation python sous Opérations de séquence courantes:

s [i: j]

La tranche de s de i à j est définie comme la séquence d'éléments d'index k tel que i <= k <j. Si i ou j est supérieur à len (s), utilisez len (s). Si i est omis ou Aucun, utilisez 0. Si j est omis ou Aucun, utilisez len (s). Si i est supérieur ou égal à j, la tranche est vide.

source

23
Uku Loskit

Comme l'ont dit @Uku et @thebjorn Slicing

Mais une façon plus simple de penser est de considérer une chaîne comme une liste, par exemple vous pouvez faire:

text = 'Any String'
for letter in text:
    print letter

Et la même chose si vous voulez obtenir une lettre spécifique à l'intérieur de la chaîne:

>> text = 'Any String'
>> text[4]
'S'

ps.: N'oubliez pas qu'il est basé sur zéro, donc le texte [4] renvoie la 5ème lettre.

En utilisant Slice, il retournera un texte "sous-chaîne" [i: j] à partir de votre chaîne d'origine où "i" est l'index initial (inclus) et "j" est l'index de fin (exclusif), par exemple:

>> text = 'Any String'
>> text[4:6] # from index 4 to 6 exclusive, so it returns letters from index 4 and 5
'St'
>> text[0:4]
'Any '
>> text[:4] # omiting the "i" index means i = 0
'Any '
>> text[4:] # omitting the "j" index means until the end of the string

Un indice négatif est relatif à la fin de la chaîne comme faire une substitution de l'index négatif à "len (texte) + i".

Dans notre cas, len (texte) est 10, un indice négatif -1 sera comme utiliser text [9] pour obtenir le dernier élément, -2 retournera le dernier mais un élément et ainsi de suite.

Dans les exemples que vous avez envoyés, la chaîne [0: -3] doit renvoyer tout sauf les 3 derniers caractères et la chaîne [3: -3] doit renvoyer tout sauf les 3 premiers et les 3 derniers.

J'espère que cela a aidé.

10
Guedes

C'est ce qu'on appelle le tranchage, en savoir plus à ce sujet, par exemple ici: http://docs.python.org/tutorial/introduction.html#strings

2
thebjorn