2010-08-15 3 views
62

Peut sembler trouver une fonction de sous-chaîne dans python. Dites que je veux afficher les 100 premiers caractères d'une chaîne, comment puis-je faire cela?Sortie des 100 premiers caractères d'une chaîne

Je veux le faire aussi en toute sécurité, en mesurant si la chaîne est de 50 caractères, il ne devrait pas échouer.

+2

Le suivi de cette question est: [Bonne amorce pour la notation de tranche de Python] (http://stackoverflow.com/questions/509211/good-primer-for-python-slice-notation) –

+1

Que voulez-vous dire par " personnages"? Des points de code, des grappes de graphèmes ou des unités de code? Le découpage compte les unités de code, ce qui peut ne pas donner le résultat souhaité. – Philipp

Répondre

96
print my_string[0:100] 
+1

Vous pouvez également faire 'my_string [: 100]', non? – nnyby

21

Facile:

print mystring[:100] 
48

De python tutorial:

indices de tranche dégénérés sont traités gracieusement: un indice qui est trop grand est remplacé par la taille de la chaîne, un limite inférieure inférieure à la limite inférieure bound renvoie un vide y chaîne.

Il est sûr à utiliser x[:100].

4

Le découpage des tableaux se fait avec [first:last+1].

Un truc que j'ai tendance à utiliser beaucoup est d'indiquer des informations supplémentaires avec des ellipses. Donc, si votre champ est de cent caractères, je l'utilise:

if len(s) <= 100: 
    print s 
else: 
    print "%s..."%(s[:97]) 

Et oui, je sais () est superflu dans ce cas pour l'opérateur de formatage %, il est juste mon style.

+0

Je suppose que c'était censé être matière à réflexion, mais dans le cas du PO, je ne suggérerais probablement pas de le faire. Le résultat serait une chaîne que vous auriez à vérifier pour le contenu à ajuster plus avant ou quelque chose comme ça.Dans ce cas, j'imagine que l'on voudrait soit que ce nombre soit variable, et que le résultat soit toujours correct, soit le nombre à corriger et la manipulation produisant quelque chose de significatif, ou erreur ou retournant gracieusement en cas d'échec. Je ne peux pas penser à de nombreux cas, autres que la fourniture d'informations lisibles par l'homme, où je voudrais ajouter du texte arbitrairement à une chaîne. –

6

Pour répondre à la préoccupation de Philipp (dans les commentaires), tranchage fonctionne bien pour les chaînes unicode trop

>>> greek=u"αβγδεζηθικλμνξοπρςστυφχψω" 
>>> print len(greek) 
25 
>>> print greek[:10] 
αβγδεζηθικ 

Si vous souhaitez exécuter le code ci-dessus comme un script, mettre cette ligne en haut

# -*- coding: utf-8 -*- 

Si votre éditeur ne sauvegarde pas en utf-8, remplacer le codage correct

+1

Ne pas déprécier votre réponse, mais il y a seulement 24 lettres en grec, 'ς' et' σ' sont la même lettre :-) – paxdiablo

+3

@paxdiablo, doh! Je les ai copiés de la page wikipedia. Heureusement, je n'ai pas nommé la variable 'greek_alphabet' alors :) –

1

la plupart des exemples précédents soulèvera une exception dans le cas où votre chaîne est pas assez long.

Une autre approche consiste à utiliser 'yourstring'.ljust(100)[:100].strip().

Cela vous donnera 100 premiers caractères. Vous pourriez obtenir une chaîne plus courte au cas où vos derniers caractères seraient des espaces.

Questions connexes