Python de chaîne de formatage - limiter la longueur de la chaîne, mais la garniture de chaîne commençant
Je suis à l'aide de Python standard module de saisie avec mise en forme personnalisée, où j'ai limite de la longueur de certains champs. Il utilise la norme %
Python opérateur.
Que je peux appliquer la limite de un pour cent chaîne formatée comme ceci (ce qui limite la longueur jusqu'à 10 caractères):
>>> "%.10s" % "Lorem Ipsum"
'Lorem Ipsu'
Est-il possible de le tailler dès le début, de sorte que la sortie est 'orem Ipsum'
(sans manipuler de droite argument)?
- Je ne pense pas que c'est possible.
Vous devez vous connecter pour publier un commentaire.
Est-il possible de le tailler dès le début % de formatage?
Python % mise en forme vient de C printf.
Noter que le
.
indique la précision pour un float. Qu'il travaille sur une chaîne de caractères est un simple effet secondaire, et, malheureusement, il n'y a aucune disposition dans la chaîne de mise en forme de spécification pour accueillir le décapage d'une chaîne en partant de la gauche fixe largeur max.Par conséquent, si vous devez bande d'une chaîne à une largeur fixe à partir de la fin, je recommande à la tranche à partir d'un indice négatif. Cette opération est robuste, et de ne pas échouer si la chaîne est à moins de 10 caractères.
str.format
également aucune aidestr.format
est d'aucune aide ici, la largeur est la largeur minimum:(L'astérisque, "
*
", est le caractère de remplissage.)%
et.format()
intrinsèquement enlève le côté droit. Donc, sauf si vous utilisez la troncature de chaîne, l'inversion, ou d'un autre avant de le soumettre à la mise en forme, semble impossible..format
la documentation est assez bien documenté et facile à lire. Il aurait été plus facile de dire que de la documentation....format
documentation est ici si vous le souhaitez. Personnellement, je trouve cela plutôt dense et frustrant. Otoh, que, c'est une référence plus qu'un how-to-use, et les fonctionnalités de base et les options sont nombreuses et détaillées.Cela peut facilement être fait par le biais de découpage, de sorte que vous n'avez pas besoin de tout format de la chaîne de manipulation à faire votre TRAVAIL
J'ai eu la même question et est venu avec cette solution à l'aide de LogRecordFactory.
Ici, je suis en tronquant le nom de 10 caractères et de les stocker dans l'attribut sname, qui peut être utilisé comme n'importe quelle autre valeur.
Il est possible de stocker le nom tronqué dans l'enregistrement.nom, mais j'ai voulu garder le nom original autour de trop.