Python tronquer une chaîne longue
Comment tronquer une chaîne de 75 caractères en Python?
C'est la façon dont c'est fait en JavaScript:
var data="saddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsaddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsadddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
var info = (data.length > 75) ? data.substring[0,75] + '..' : data;
Vous devez vous connecter pour publier un commentaire.
len(data) > 77
de compte pour le double de points (il est inutile d'une tronquer que le dernier caractère de la remplacer par un point).[:n]
appelé pour que je puisse regarder dans la documentation?Encore plus courte :
Encore plus concise:
Si elle est inférieure à 75 caractères il n'y aura pas de changement.
Si vous utilisez Python 3.4+, vous pouvez utiliser
d'habillage de texte.raccourcir
de la bibliothèque standard:shorten()
tronque mots, et non pas de simples caractères. J'ai cherché, mais il ne semble pas y avoir moyen de configurershorten()
ou unTextWrapper
instance de clip unique de caractères et non pas des paroles.Pour Django solution (qui n'a pas été mentionné dans la question):
Ont un coup d'oeil à Truncator du code source à apprécier le problème:
https://github.com/django/django/blob/master/django/utils/text.py#L66
Concernant la troncature avec Django:
Django HTML troncature
Vous pouvez utiliser ce one-liner:
[:n]
appelé pour que je puisse regarder dans la documentation?Avec la regex:
Longues chaînes de caractères sont tronqués:
Des chaînes plus courtes jamais obtenir tronquée:
De cette façon, vous pouvez "couper" la partie centrale de la chaîne, ce qui est plus joli dans certains cas:
Cette méthode n'utilise pas du tout si:
data[:75] + bool(data[75:]) * '..'
75
) dans une variable pour éviter les incohérences.limit = 75; info = data[:limit] + '..' * (len(data) > limit)
Encore une autre solution. Avec
True
etFalse
vous obtenez un peu de retour sur le test à la fin.Seulement:
Vous ne pouvez pas réellement "tronquer" une chaîne Python comme vous pouvez le faire un C alloués dynamiquement chaîne. Chaînes de caractères en Python sont immuables. Ce que vous pouvez faire est de couper une chaîne comme décrit dans les autres réponses, ce qui donne une nouvelle chaîne contenant uniquement les caractères définis par la tranche des décalages et l'étape.
Dans certains (non-fonctionnel) des cas cela peut être un peu ennuyeux, par exemple lorsque vous choisissez Python de votre entrevue de la langue et l'intervieweur vous demande de supprimer les doublons de caractères d'une chaîne en place. Doh.
Voici une fonction que j'ai faite dans le cadre d'une nouvelle classe String... Il permet l'ajout d'un suffixe ( si la chaîne est de taille après le parage et en ajoutant qu'il est assez long, mais vous n'avez pas besoin de forcer la taille absolue )
J'étais en train de changer un peu les choses autour, donc il y a quelques inutiles logique des coûts ( si _truncate ... par exemple ) où il n'est plus nécessaire et il est de retour au sommet...
Mais, il est toujours une bonne fonction pour tronquer les données...
Il n'y a pas besoin d'une expression régulière, mais vous ne voulez pas utiliser la mise en forme de chaîne plutôt que la concaténation de chaîne dans la accepté de répondre.
C'est probablement la plus canonique, Pythonic façon de tronquer la chaîne
data
à 75 caractères.saddddddd...
chaîne se transforme en111111...
🙂 je sais que c'est un copier-coller de la faute de frappe bien, et je suis d'accord avec vous sur les expressions régulières.