GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing docs.python.org — string --- Common string operations
|
Option |
Signification |
|---|---|
|
Force le champ à être aligné à gauche dans l'espace disponible (c'est le spécificateur par défaut pour la plupart des objets). |
|
Force le champ à être aligné à droite dans l'espace disponible (c'est le spécificateur par défaut pour les nombres). |
|
Forces the padding to be placed after the sign (if any)
but before the digits. This is used for printing fields
in the form '+000000120'. This alignment option is only
valid for numeric types, excluding |
|
Force le champ à être centré dans l'espace disponible. |
Notons que la longueur du champ est toujours égale à la taille nécessaire pour remplir le champ avec l'objet à moins que la valeur minimum ne soit précisée. Ainsi, si aucune valeur n'est précisée, l'option d'alignement n'a aucun sens.
L'option sign est uniquement valide pour les types numériques, et peut valoir :
Option |
Signification |
|---|---|
|
Indicates that a sign should be used for both positive as well as negative numbers. |
|
Indicates that a sign should be used only for negative numbers (this is the default behavior). |
espace |
Indicates that a leading space should be used on positive numbers, and a minus sign on negative numbers. |
The 'z' option coerces negative zero floating-point values to positive
zero after rounding to the format precision. This option is only valid for
floating-point presentation types.
Modifié dans la version 3.11: Added the 'z' option (see also PEP 682).
L'option '#' impose l'utilisation de la "forme alternative" pour la conversion. La forme alternative est définie différemment pour différent types. Cette option est uniquement valide pour les types entiers, flottants et complexes. Pour les entiers, quand l'affichage binaire, octal ou hexadécimal est utilisé, cette option ajoute le préfixe '0b', '0o', '0x' ou '0X' à la valeur affichée. Pour les flottants et les complexes, la forme alternative impose que le résultat de la conversion contienne toujours une virgule, même si aucun chiffre ne vient après. Normalement, une virgule apparaît dans le résultat de ces conversions seulement si un chiffre le suit. De plus, pour les conversions 'g' et 'G', les zéros finaux ne sont pas retirés du résultat.
The width is a decimal integer defining the minimum total field width, including any prefixes, separators, and other formatting characters. If not specified, then the field width will be determined by the content.
When no explicit alignment is given, preceding the width field by a zero
('0') character enables sign-aware zero-padding for numeric types,
excluding complex. This is equivalent to a fill character of
'0' with an alignment type of '='.
Modifié dans la version 3.10: Preceding the width field by '0' no longer affects the default
alignment for strings.
The precision is a decimal integer indicating how many digits should be
displayed after the decimal point for presentation types
'f' and 'F', or before and after the decimal point for presentation
types 'g' or 'G'. For string presentation types the field
indicates the maximum field size - in other words, how many characters will be
used from the field content. The precision is not allowed for integer
presentation types.
The grouping option after width and precision fields specifies a digit group separator for the integral and fractional parts of a number respectively. It can be one of the following:
Option |
Signification |
|---|---|
|
Inserts a comma every 3 digits for
integer presentation type |
|
Inserts an underscore every 3 digits for
integer presentation type |
For a locale-aware separator, use the 'n'
float presentation type or
integer presentation type instead.
Modifié dans la version 3.1: Ajout de l'option ',' (voir PEP 378).
Modifié dans la version 3.6: Ajout de l'option '_' (voir aussi PEP 515).
Modifié dans la version 3.14: Support the grouping option for the fractional part.
Finalement, le spécificateur type détermine comment la donnée doit être représentée.
Les types disponibles de représentation de chaîne sont :
Type
Signification
's'Format de chaîne. C'est le type par défaut pour les chaînes de caractères et peut être omis.
NonePareil que
's'.
Les types disponibles de représentation d'entier sont :
Type
Signification
'b'Format binaire. Affiche le nombre en base 2.
'c'Caractère. Convertit l'entier en caractère Unicode associé avant de l'afficher.
'd'Entier décimal. Affiche le nombre en base 10.
'o'Format octal. Affiche le nombre en base 8.
'x'Format hexadécimal. Affiche le nombre en base 16 en utilisant les lettres minuscules pour les chiffres au-dessus de 9.
'X'Format hexadécimal. Affiche le nombre en base 16 en utilisant les lettres majuscules pour les chiffres au-dessus de 9. Si
'#'est présent, le préfixe'0x'est également passé en majuscules pour devenir'0X'.
'n'Number. This is the same as
'd', except that it uses the current locale setting to insert the appropriate digit group separators. Note that the default locale is not the system locale. Depending on your use case, you may wish to setLC_NUMERICwithlocale.setlocale()before using'n'.
NonePareil que
'd'.
In addition to the above presentation types, integers can be formatted
with the floating-point presentation types listed below (except
'n' and None). When doing so, float() is used to convert the
integer to a floating-point number before formatting.
Les représentations possibles pour les float et les Decimal sont :
Type
Signification
'e'Scientific notation. For a given precision
p, formats the number in scientific notation with the letter 'e' separating the coefficient from the exponent. The coefficient has one digit before andpdigits after the decimal point, for a total ofp + 1significant digits. With no precision given, uses a precision of6digits after the decimal point forfloat, and shows all coefficient digits forDecimal. Ifp=0, the decimal point is omitted unless the#option is used.For
float, the exponent always contains at least two digits, and is zero if the value is zero.
'E'Notation scientifique. Pareil que
'e'sauf que Python utilise la lettre majuscule 'E' comme séparateur.
'f'Fixed-point notation. For a given precision
p, formats the number as a decimal number with exactlypdigits following the decimal point. With no precision given, uses a precision of6digits after the decimal point forfloat, and uses a precision large enough to show all coefficient digits forDecimal. Ifp=0, the decimal point is omitted unless the#option is used.
'F'Virgule fixe. Pareil que
'f'à partnanqui devientNANetinfqui devientINF.
'g'Format général. Pour une précision donnée
p >= 1, Python arrondit le nombre àpchiffres significatifs et puis formate le résultat soit en virgule fixe soit en notation scientifique, en fonction de la magnitude. Une précision de0est considérée équivalente à une précision de1.Les règles précises sont les suivantes : supposons que le résultat formaté avec le type de représentation
'e'et une précisionp-1ait un exposantexp. Alors, sim <= exp <= poùmvaut–4pour les nombres à virgule flottante et–6pour lesDecimals, le nombre est formaté avec le type de représentation'f'et une précisionp-1-exp. Sinon, le nombre est formaté avec le type de représentation'e'et une précisionp-1. Dans les deux cas, les zéros finaux et non significatifs sont retirés, et la virgule est également retirée s'il n'y a aucun chiffre la suivant, sauf si l'option'#'est utilisée.Si la précision n'est pas donnée, utilise une précision de
6chiffres significatifs pour lesfloat. Pour lesDecimal, la mantisse du résultat dépend de la valeur : la notation scientifique est utilisée pour les valeurs inférieures à1e-6en valeur absolue et pour celles dont le dernier chiffre significatif a une position supérieure à 1 ; dans les autres cas, la notation en virgule fixe est utilisée.Les valeurs suivantes : infini négatif, infini positif, zéro positif, zéro négatif, not a number sont formatées respectivement par
inf,-inf,0,-0etnan, peu importe la précision.
'G'Format général. Pareil que
'G'si ce n'est que'E'est utilisé si le nombre est trop grand. La représentation des infinis et de NaN sont en majuscules également.
'n'Number. This is the same as
'g', except that it uses the current locale setting to insert the appropriate digit group separators for the integral part of a number. Note that the default locale is not the system locale. Depending on your use case, you may wish to setLC_NUMERICwithlocale.setlocale()before using'n'.
'%'Pourcentage. Multiplie le nombre par 100 et l'affiche en virgule fixe (
'f'), suivi d'un symbole pourcent'%'.
NoneFor
floatthis is like the'g'type, except that when fixed-point notation is used to format the result, it always includes at least one digit past the decimal point, and switches to the scientific notation whenexp >= p - 1. When the precision is not specified, the latter will be as large as needed to represent the given value faithfully.Pour les
Decimal, c'est identique à'g'ou'G'en fonction de la valeur decontext.capitalsdu contexte décimal courant.L'effet visé est de coller à la valeur renvoyée par
str()telle que modifiée par les autres modificateurs de format.
The result should be correctly rounded to a given precision p of digits
after the decimal point. The rounding mode for float matches that
of the round() builtin. For Decimal, the rounding
mode of the current context will be used.
The available presentation types for complex are the same as those for
float ('%' is not allowed). Both the real and imaginary components
of a complex number are formatted as floating-point numbers, according to the
specified presentation type. They are separated by the mandatory sign of the
imaginary part, the latter being terminated by a j suffix. If the presentation
type is missing, the result will match the output of str() (complex numbers with
a non-zero real part are also surrounded by parentheses), possibly altered by
other format modifiers.
Cette section contient des exemples de la syntaxe de str.format() et des comparaisons avec l'ancien formatage par %.
Dans la plupart des cas, la syntaxe est similaire à l'ancien formatage par %, avec l'ajout de {} et avec : au lieu de %. Par exemple : '%03.2f' peut être changé en '{03.2f}'.
La nouvelle syntaxe de formatage gère également de nouvelles options et des options différentes, montrées dans les exemples qui suivent.
Accéder à un argument par sa position :
>>> '{0}, {1}, {2}'.format('a', 'b', 'c') 'a, b, c' >>> '{}, {}, {}'.format('a', 'b', 'c') # 3.1+ only 'a, b, c' >>> '{2}, {1}, {0}'.format('a', 'b', 'c') 'c, b, a' >>> '{2}, {1}, {0}'.format(*'abc') # unpacking argument sequence 'c, b, a' >>> '{0}{1}{0}'.format('abra', 'cad') # arguments' indices can be repeated 'abracadabra'
Accéder à un argument par son nom :
>>> 'Coordinates: {latitude}, {longitude}'.format(latitude='37.24N', longitude='-115.81W') 'Coordinates: 37.24N, -115.81W' >>> coord = {'latitude': '37.24N', 'longitude': '-115.81W'} >>> 'Coordinates: {latitude}, {longitude}'.format(**coord) 'Coordinates: 37.24N, -115.81W'
Accéder aux attributs d'un argument :
>>> c = 3-5j >>> ('The complex number {0} is formed from the real part {0.real} ' ... 'and the imaginary part {0.imag}.').format(c) 'The complex number (3-5j) is formed from the real part 3.0 and the imaginary part -5.0.' >>> class Point: ... def __init__(self, x, y): ... self.x, self.y = x, y ... def __str__(self): ... return 'Point({self.x}, {self.y})'.format(self=self) ... >>> str(Point(4, 2)) 'Point(4, 2)'
Accéder aux éléments d'un argument :
>>> coord = (3, 5) >>> 'X: {0[0]}; Y: {0[1]}'.format(coord) 'X: 3; Y: 5'
Remplacer %s et %r :
>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2') "repr() shows quotes: 'test1'; str() doesn't: test2"
Aligner le texte et spécifier une longueur minimale :
>>> '{:<30}'.format('left aligned') 'left aligned ' >>> '{:>30}'.format('right aligned') ' right aligned' >>> '{:^30}'.format('centered') ' centered ' >>> '{:*^30}'.format('centered') # use '*' as a fill char '***********centered***********'
Remplacer %+f, %-f, et %f et spécifier un signe :
>>> '{:+f}; {:+f}'.format(3.14, -3.14) # show it always '+3.140000; -3.140000' >>> '{: f}; {: f}'.format(3.14, -3.14) # show a space for positive numbers ' 3.140000; -3.140000' >>> '{:-f}; {:-f}'.format(3.14, -3.14) # show only the minus -- same as '{:f}; {:f}' '3.140000; -3.140000'
Remplacer %x et %o et convertir la valeur dans différentes bases :
>>> # format also supports binary numbers >>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(42) 'int: 42; hex: 2a; oct: 52; bin: 101010' >>> # with 0x, 0o, or 0b as prefix: >>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(42) 'int: 42; hex: 0x2a; oct: 0o52; bin: 0b101010'
Using the comma or the underscore as a digit group separator:
>>> '{:,}'.format(1234567890) '1,234,567,890' >>> '{:_}'.format(1234567890) '1_234_567_890' >>> '{:_b}'.format(1234567890) '100_1001_1001_0110_0000_0010_1101_0010' >>> '{:_x}'.format(1234567890) '4996_02d2' >>> '{:_}'.format(123456789.123456789) '123_456_789.12345679' >>> '{:.,}'.format(123456789.123456789) '123456789.123,456,79' >>> '{:,._}'.format(123456789.123456789) '123,456,789.123_456_79'
Exprimer un pourcentage :
>>> points = 19 >>> total = 22 >>> 'Correct answers: {:.2%}'.format(points/total) 'Correct answers: 86.36%'
Utiliser un formatage propre au type :
>>> import datetime as dt >>> d = dt.datetime(2010, 7, 4, 12, 15, 58) >>> '{:%Y-%m-%d %H:%M:%S}'.format(d) '2010-07-04 12:15:58'
Arguments imbriqués et des exemples plus complexes :
>>> for align, text in zip('<^>', ['left', 'center', 'right']): ... '{0:{fill}{align}16}'.format(text, fill=align, align=align) ... 'left<<<<<<<<<<<<' '^^^^^center^^^^^' '>>>>>>>>>>>right' >>> >>> octets = [192, 168, 0, 1] >>> '{:02X}{:02X}{:02X}{:02X}'.format(*octets) 'C0A80001' >>> int(_, 16) 3232235521 >>> >>> width = 5 >>> for num in range(5,12): ... for base in 'dXob': ... print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ') ... print() ... 5 5 5 101 6 6 6 110 7 7 7 111 8 8 10 1000 9 9 11 1001 10 A 12 1010 11 B 13 1011
Note
The feature described here was introduced in Python 2.4;
a simple templating method based upon regular expressions.
It predates str.format(), formatted string literals,
and template string literals.
It is unrelated to template string literals (t-strings),
which were introduced in Python 3.14.
These evaluate to string.templatelib.Template objects,
found in the string.templatelib module.
Template strings provide simpler string substitutions as described in PEP 292. A primary use case for template strings is for internationalization (i18n) since in that context, the simpler syntax and functionality makes it easier to translate than other built-in string formatting facilities in Python. As an example of a library built on template strings for i18n, see the flufl.i18n package.
Les chaînes modèles prennent en charge les substitutions basées sur $ en utilisant les règles suivantes :
$$ est un échappement ; il est remplacé par un simple $.
$identifier dénomme un substituant lié à la clef "identifier". Par défaut, "identifier" est restreint à toute chaîne de caractères ASCII alphanumériques sensibles à la casse (avec les underscores) commençant avec un underscore ou un caractère alphanumérique. Le premier caractère n'étant pas un identifieur après le $ termine la spécification du substituant.
${identifier} est équivalent à $identifier. Cette notation est requise quand un caractère valide pour une clef de substituant suit directement le substituant mais ne fait pas partie du substituant, comme "${noun}ification".
Tout autre présence du symbole $ dans une chaîne résultera en la levée d'une ValueError.
The string module provides a Template class that implements
these rules. The methods of Template are:
Le constructeur prend un seul argument qui est la chaîne du template.
Applique les substitutions du template, et la renvoie dans une nouvelle chaîne. mapping est un objet dictionnaire-compatible qui lie les substituants dans le template. De même, vous pouvez fournir des arguments mot-clefs tels que les mot-clefs sont les substituants. Quand à la fois mapping et kwds sont donnés et qu'il y a des doublons, les substituants de kwds sont prioritaires.
Comme substitute(), si ce n'est qu'au lieu de lever une KeyError si un substituant n'est ni dans mapping, ni dans kwds, c'est le nom du substituant inchangé qui apparaît dans la chaîne finale. Également, à l'inverse de substitute(), toute autre apparition de $ renverra simplement $ au lieu de lever une exception ValueError.
Bien que d'autres exceptions peuvent toujours être levées, cette méthode est dite sûre car elle tente de toujours renvoyer une chaîne utilisable au lieu de lever une exception. Ceci dit, safe_substitute() est tout sauf sûre car elle ignore silencieusement toute malformation dans le template qui contient des délimiteurs fantômes, des accolades non fermées, ou des substituants qui ne sont pas des identificateurs Python valides.
Returns False if the template has invalid placeholders that will cause
substitute() to raise ValueError.
Ajouté dans la version 3.11.
Returns a list of the valid identifiers in the template, in the order they first appear, ignoring any invalid identifiers.
Ajouté dans la version 3.11.
Les instances de la classe Template fournissent également un attribut public :
C'est l'objet template passé comme argument au constructeur. En général, vous ne devriez pas le changer, mais un accès en lecture-seule n'est pas possible à fournir.
Voici un exemple de comment utiliser un Template :
>>> from string import Template >>> s = Template('$who likes $what') >>> s.substitute(who='tim', what='kung pao') 'tim likes kung pao' >>> d = dict(who='tim') >>> Template('Give $who $100').substitute(d) Traceback (most recent call last): ... ValueError: Invalid placeholder in string: line 1, col 11 >>> Template('$who likes $what').substitute(d) Traceback (most recent call last): ... KeyError: 'what' >>> Template('$who likes $what').safe_substitute(d) 'tim likes $what'
Usage avancé : vous pouvez faire dériver vos sous-classes de Template pour personnaliser la syntaxe des substituants, les caractères délimiteurs, ou l'entièreté de l'expression rationnelle utilisée pour analyser les chaînes templates. Pour faire cela, vous pouvez redéfinir les attributs suivants :
delimiter — La chaîne littérale décrivant le délimiteur pour introduire un substituant. Sa valeur par défaut est $. Notez qu'elle ne doit pas être une expression rationnelle, puisque l'implémentation appelle re.escape() sur cette chaîne si nécessaire. Notez aussi que le délimiteur ne peut pas être changé après la création de la classe.
idpattern — L'expression rationnelle décrivant le motif pour les substituants non entourés d'accolades. La valeur par défaut de cette expression rationnelle est (?a:[_a-z][_a-z0-9]*). Si idpattern est donné et braceidpattern est None, ce motif est aussi utilisé pour les marqueurs entre accolades.
Note
Puisque par défaut flags vaut re.IGNORECASE, des caractères non-ASCII peuvent correspondre au motif [a-z]. C'est pourquoi on utilise une option locale a ici.
Modifié dans la version 3.7: braceidpattern peut être utilisé pour définir des motifs des motifs différents suivant qu’ils sont à l’intérieur ou à l’extérieur des accolades.
braceidpattern — Similaire à idpattern mais décrit le motif quand il est placé entre accolades. La valeur par défaut est None ce qui signifie que seul idpattern est pris en compte (le motif est le même, qu’il soit à l’intérieur d’accolades ou non). S’il est donné, cela vous permet de définir des motifs entre accolades différents des motifs sans accolades.
Ajouté dans la version 3.7.
flags — L'indicateur d'expression rationnelle qui sera appliqué lors de la compilation de l'expression rationnelle pour reconnaître les substitutions. La valeur par défaut est re.IGNORECASE. Notez que re.VERBOSE sera toujours ajouté à l'indicateur. Donc, un idpattern personnalisé doit suivre les conventions des expressions rationnelles verbose.
Ajouté dans la version 3.2.
Alternatively, you can provide the entire regular expression pattern by overriding the class attribute pattern. If you do this, the value must be a regular expression pattern string, or a compiled regular expression object, with four named capturing groups. The capturing groups correspond to the rules given above, along with the invalid placeholder rule:
escaped — Ce groupe lie les séquences échappées (par exemple $$) dans le motif par défaut.
named — Ce groupe lie les substituants non entourés d'accolades ; il ne devrait pas inclure le délimiteur dans le groupe de capture.
braced — Ce groupe lie le nom entouré d'accolades ; il ne devrait inclure ni le délimiteur, ni les accolades dans le groupe de capture.
invalid — Ce groupe lie tout autre motif de délimitation (habituellement, un seul délimiteur) et il devrait apparaître en dernier dans l'expression rationnelle.
The methods on this class will raise ValueError if the pattern matches
the template without one of these named groups matching.
Divise l'argument en mots en utilisant str.split(), capitalise chaque mot en utilisant str.capitalize() et assemble les mots capitalisés en utilisant str.join(). Si le second argument optionnel sep est absent ou vaut None, les séquences de caractères blancs sont remplacées par un seul espace et les espaces débutant et finissant la chaîne sont retirés. Sinon, sep et utilisé pour séparer et ré-assembler les mots.