Recherche…


Syntaxe

  • str.capitalize () -> str
  • str.casefold () -> str [uniquement pour Python> 3.3]
  • str.center (width [, fillchar]) -> str
  • str.count (sub [, start [, end]]) -> int
  • str.decode (encoding = "utf-8" [, des erreurs]) -> unicode [uniquement dans Python 2.x]
  • str.encode (encoding = "utf-8", errors = "strict") -> octets
  • str.endswith (suffixe [, début [, fin]]) -> bool
  • str.expandtabs (tabsize = 8) -> str
  • str.find (sub [, start [, end]]) -> int
  • str.format (* args, ** kwargs) -> str
  • str.format_map (mapping) -> str
  • str.index (sub [, start [, end]]) -> int
  • str.isalnum () -> bool
  • str.isalpha () -> bool
  • str.isdecimal () -> bool
  • str.isdigit () -> bool
  • str.isidentifier () -> bool
  • str.islower () -> bool
  • str.isnumeric () -> bool
  • str.isprintable () -> bool
  • str.isspace () -> bool
  • str.istitle () -> bool
  • str.isupper () -> bool
  • str.join (itérable) -> str
  • str.ljust (width [, fillchar]) -> str
  • str.lower () -> str
  • str.lstrip ([chars]) -> str
  • static str.maketrans (x [, y [, z]])
  • str.partition (sep) -> (tête, sep, queue)
  • str.replace (old, new [, count]) -> str
  • str.rfind (sub [, start [, end]]) -> int
  • str.rindex (sub [, start [, end]]) -> int
  • str.rjust (width [, fillchar]) -> str
  • str.rpartition (sep) -> (tête, sep, queue)
  • str.rsplit (sep = Aucun, maxsplit = -1) -> liste des chaînes
  • str.rstrip ([chars]) -> str
  • str.split (sep = Aucun, maxsplit = -1) -> liste de chaînes
  • str.splitlines ([keepends]) -> liste des chaînes
  • str.startswith (préfixe [, début [, fin]]) -> livre
  • str.strip ([chars]) -> str
  • str.swapcase () -> str
  • str.title () -> str
  • str.translate (table) -> str
  • str.upper () -> str
  • str.zfill (width) -> str

Remarques

Les objets String sont immuables, ce qui signifie qu'ils ne peuvent pas être modifiés de la même manière qu'une liste. De ce fait, les méthodes du type intégré str renvoient toujours un nouvel objet str , qui contient le résultat de l'appel de la méthode.

Changer la capitalisation d'une chaîne

Le type de chaîne de Python fournit de nombreuses fonctions qui agissent sur la capitalisation d'une chaîne. Ceux-ci inclus :

  • str.casefold
  • str.upper
  • str.lower
  • str.capitalize
  • str.title
  • str.swapcase

Avec les chaînes Unicode (la valeur par défaut dans Python 3), ces opérations ne sont pas des correspondances 1: 1 ou réversibles. La plupart de ces opérations sont destinées à l'affichage, plutôt qu'à la normalisation.


Python 3.x 3.3

str.casefold()

str.casefold crée une chaîne en minuscules qui convient aux comparaisons insensibles à la casse. Cette str.lower est plus agressive que str.lower et peut modifier des chaînes qui sont déjà en minuscules ou dont la longueur augmente, et qui ne sont pas destinées à l'affichage.

"XßΣ".casefold()
# 'xssσ'

"XßΣ".lower()
# 'xßς'

Les transformations qui ont lieu sous le regroupement sont définies par le consortium Unicode dans le fichier CaseFolding.txt sur leur site Web.


str.upper()

str.upper prend chaque caractère d'une chaîne et le convertit en son équivalent en majuscule, par exemple:

"This is a 'string'.".upper()
# "THIS IS A 'STRING'."

str.lower()

str.lower fait le contraire; il prend chaque caractère dans une chaîne et le convertit en son équivalent minuscule:

"This IS a 'string'.".lower()
# "this is a 'string'."

str.capitalize()

str.capitalize renvoie une version en majuscule de la chaîne, c'est-à-dire que le premier caractère est en majuscule et le reste plus bas:

"this Is A 'String'.".capitalize() # Capitalizes the first character and lowercases all others
# "This is a 'string'."

str.title()

str.title renvoie la version du titre de la chaîne, c'est-à-dire que chaque lettre au début d'un mot est en majuscule et que toutes les autres sont en minuscule:

"this Is a 'String'".title()
# "This Is A 'String'"

str.swapcase()

str.swapcase renvoie un nouvel objet chaîne dans lequel tous les caractères minuscules sont remplacés par des majuscules et tous les caractères majuscules vers le bas:

"this iS A STRiNG".swapcase() #Swaps case of each character
# "THIS Is a strIng"

Utilisation en tant que méthodes de classe str

Il convient de noter que ces méthodes peuvent être appelées soit sur des objets de type chaîne (voir ci-dessus), soit comme méthode de classe de la classe str (avec un appel explicite à str.upper , etc.).

str.upper("This is a 'string'")
# "THIS IS A 'STRING'"

Ceci est très utile lorsque vous appliquez l'une de ces méthodes à plusieurs chaînes en même temps, par exemple, une fonction de map .

map(str.upper,["These","are","some","'strings'"])
# ['THESE', 'ARE', 'SOME', "'STRINGS'"]

Diviser une chaîne basée sur un délimiteur en une liste de chaînes

str.split(sep=None, maxsplit=-1)

str.split prend une chaîne et retourne une liste de sous-chaînes de la chaîne d'origine. Le comportement diffère selon que l'argument sep est fourni ou omis.

Si sep n'est pas fourni, ou est None , alors le fractionnement a lieu partout où il y a des espaces. Toutefois, les espaces blancs de début et de fin sont ignorés et plusieurs caractères d'espacement consécutifs sont traités de la même manière qu'un seul caractère d'espacement:

>>> "This is a sentence.".split()
['This', 'is', 'a', 'sentence.']

>>> " This is    a sentence.  ".split()
['This', 'is', 'a', 'sentence.']

>>> "            ".split()
[]

Le paramètre sep peut être utilisé pour définir une chaîne de délimiteur. La chaîne d'origine est fractionnée à l'endroit où se trouve la chaîne de délimiteur et le délimiteur lui-même est supprimé. Plusieurs délimiteurs consécutifs ne sont pas traités comme une seule occurrence, mais créent plutôt des chaînes vides.

>>> "This is a sentence.".split(' ')
['This', 'is', 'a', 'sentence.']

>>> "Earth,Stars,Sun,Moon".split(',')
['Earth', 'Stars', 'Sun', 'Moon']

>>> " This is    a sentence.  ".split(' ')
['', 'This', 'is', '', '', '', 'a', 'sentence.', '', '']

>>> "This is a sentence.".split('e')
['This is a s', 'nt', 'nc', '.']

>>> "This is a sentence.".split('en')
['This is a s', 't', 'ce.']

La valeur par défaut consiste à diviser chaque occurrence du délimiteur, mais le paramètre maxsplit limite le nombre de fractionnements. La valeur par défaut de -1 signifie aucune limite:

>>> "This is a sentence.".split('e', maxsplit=0)
['This is a sentence.']

>>> "This is a sentence.".split('e', maxsplit=1)
['This is a s', 'ntence.']

>>> "This is a sentence.".split('e', maxsplit=2)
['This is a s', 'nt', 'nce.']

>>> "This is a sentence.".split('e', maxsplit=-1)
['This is a s', 'nt', 'nc', '.']

str.rsplit(sep=None, maxsplit=-1)

str.rsplit ("split droit") diffère de str.split ("split gauche") lorsque maxsplit est spécifié. Le fractionnement commence à la fin de la chaîne plutôt qu'au début:

>>> "This is a sentence.".rsplit('e', maxsplit=1)
['This is a sentenc', '.']

>>> "This is a sentence.".rsplit('e', maxsplit=2)
['This is a sent', 'nc', '.']

Remarque : Python spécifie le nombre maximal de divisions effectuées, tandis que la plupart des autres langages de programmation spécifient le nombre maximal de sous - chaînes créées. Cela peut créer de la confusion lors du portage ou de la comparaison du code.

Remplacer toutes les occurrences d'une sous-chaîne par une autre sous-chaîne

Le type str de Python a également une méthode pour remplacer les occurrences d'une sous-chaîne par une autre sous-chaîne dans une chaîne donnée. Pour les cas plus exigeants, on peut utiliser re.sub .


str.replace(old, new[, count]) :

str.replace prend deux arguments old et new contenant l' old sous-chaîne à remplacer par la new sous-chaîne. L'argument optionnel count spécifie le nombre de remplacements à effectuer:

Par exemple, pour remplacer 'foo' par 'spam' dans la chaîne suivante, on peut appeler str.replace avec old = 'foo' et new = 'spam' :

>>> "Make sure to foo your sentence.".replace('foo', 'spam')
"Make sure to spam your sentence."

Si la chaîne donnée contient plusieurs exemples correspondant à l' old argument, toutes les occurrences sont remplacées par la valeur fournie dans new :

>>> "It can foo multiple examples of foo if you want.".replace('foo', 'spam')
"It can spam multiple examples of spam if you want."

à moins, bien sûr, que nous fournissions une valeur pour le count . Dans ce cas, les occurrences de count vont être remplacées:

>>> """It can foo multiple examples of foo if you want, \
... or you can limit the foo with the third argument.""".replace('foo', 'spam', 1)
'It can spam multiple examples of foo if you want, or you can limit the foo with the third argument.'

str.format et f-strings: mettre en forme les valeurs dans une chaîne

Python fournit des fonctionnalités d'interpolation et de formatage de chaînes via la fonction str.format , introduite dans la version 2.6 et des f-strings introduites dans la version 3.6.

Compte tenu des variables suivantes:

i = 10
f = 1.5
s = "foo"
l = ['a', 1, 2]
d = {'a': 1, 2: 'foo'}

Les énoncés suivants sont tous équivalents

"10 1.5 foo ['a', 1, 2] {'a': 1, 2: 'foo'}"
>>> "{} {} {} {} {}".format(i, f, s, l, d)

>>> str.format("{} {} {} {} {}", i, f, s, l, d)

>>> "{0} {1} {2} {3} {4}".format(i, f, s, l, d)

>>> "{0:d} {1:0.1f} {2} {3!r} {4!r}".format(i, f, s, l, d)

>>> "{i:d} {f:0.1f} {s} {l!r} {d!r}".format(i=i, f=f, s=s, l=l, d=d)
>>> f"{i} {f} {s} {l} {d}"

>>> f"{i:d} {f:0.1f} {s} {l!r} {d!r}"

Pour référence, Python prend également en charge les qualificateurs de style C pour le formatage des chaînes. Les exemples ci-dessous sont équivalents à ceux ci-dessus, mais les versions de str.format sont préférées en raison des avantages de la flexibilité, de la cohérence de la notation et de l'extensibilité:

"%d %0.1f %s %r %r" % (i, f, s, l, d)

"%(i)d %(f)0.1f %(s)s %(l)r %(d)r" % dict(i=i, f=f, s=s, l=l, d=d)

Les accolades str.format pour l'interpolation dans str.format peuvent également être numérotées pour réduire la duplication lors du formatage des chaînes. Par exemple, les éléments suivants sont équivalents:

"I am from Australia. I love cupcakes from Australia!"
>>> "I am from {}. I love cupcakes from {}!".format("Australia", "Australia")

>>> "I am from {0}. I love cupcakes from {0}!".format("Australia")

Alors que la documentation officielle de python est, comme d'habitude, suffisamment complète, pyformat.info propose un grand nombre d'exemples avec des explications détaillées.

De plus, les caractères { et } peuvent être échappés en utilisant des crochets doubles:

"{'a': 5, 'b': 6}"
>>> "{{'{}': {}, '{}': {}}}".format("a", 5, "b", 6)

>>> f"{{'{'a'}': {5}, '{'b'}': {6}}"

Voir Formatage de chaîne pour plus d'informations. str.format() été proposé dans PEP 3101 et les chaînes de caractères dans PEP 498 .

Comptage du nombre de fois qu'une sous-chaîne apparaît dans une chaîne

Une méthode est disponible pour compter le nombre d'occurrences d'une sous-chaîne dans une autre chaîne, str.count .


str.count(sub[, start[, end]])

str.count renvoie un int indiquant le nombre d'occurrences de non-chevauchement du sous-chaîne sub dans une autre chaîne. Les arguments optionnels start et end indiquent le début et la fin de la recherche. Par défaut start = 0 et end = len(str) signifiant que la chaîne entière sera recherchée:

>>> s = "She sells seashells by the seashore."
>>> s.count("sh")
2
>>> s.count("se")
3
>>> s.count("sea")
2
>>> s.count("seashells")
1

En spécifiant une valeur différente pour start , end , nous pouvons obtenir une recherche plus localisée et compte, par exemple, si start est égal à 13 l'appel à:

>>> s.count("sea", start)
1

est équivalent à:

>>> t = s[start:]
>>> t.count("sea")
1

Tester les caractères de début et de fin d'une chaîne

Pour tester le début et la fin d'une chaîne donnée en Python, on peut utiliser les méthodes str.startswith() et str.endswith() .


str.startswith(prefix[, start[, end]])

Comme son nom l'indique, str.startswith est utilisé pour tester si une chaîne donnée commence par les caractères donnés dans le prefix .

>>> s = "This is a test string"
>>> s.startswith("T")
True
>>> s.startswith("Thi")
True
>>> s.startswith("thi")  
False

Les arguments optionnels start et end spécifient les points de début et de fin à partir desquels les tests vont commencer et se terminer. Dans l'exemple suivant, en spécifiant une valeur de départ de 2 notre chaîne sera recherchée à partir de la position 2 et après:

>>> s.startswith("is", 2)
True

Cela donne True puisque s[2] == 'i' et s[3] == 's' .

Vous pouvez également utiliser un tuple pour vérifier s'il commence par un jeu de chaînes

>>> s.startswith(('This', 'That'))
True
>>> s.startswith(('ab', 'bc'))
False

str.endswith(prefix[, start[, end]])

str.endswith est exactement similaire à str.startswith la seule différence étant qu'il recherche les caractères de fin et non les caractères de départ. Par exemple, pour tester si une chaîne se termine par un arrêt complet, on pourrait écrire:

>>> s = "this ends in a full stop."
>>> s.endswith('.')
True
>>> s.endswith('!')
False

comme avec les startswith plus d'un caractère peut être utilisé comme séquence de fin:

>>> s.endswith('stop.')
True
>>> s.endswith('Stop.')
False

Vous pouvez également utiliser un tuple pour vérifier s'il se termine par un jeu de chaînes

>>> s.endswith(('.', 'something'))
True
>>> s.endswith(('ab', 'bc'))
False

Test de la composition d'une chaîne

Le type str de Python comporte également un certain nombre de méthodes permettant d'évaluer le contenu d'une chaîne. Ce sont str.isalpha , str.isdigit , str.isalnum , str.isspace . La capitalisation peut être testée avec str.isupper , str.islower et str.istitle .


str.isalpha

str.isalpha ne prend aucun argument et renvoie True si tous les caractères d'une chaîne donnée sont alphabétiques, par exemple:

>>> "Hello World".isalpha()  # contains a space
False
>>> "Hello2World".isalpha()  # contains a number
False
>>> "HelloWorld!".isalpha()  # contains punctuation
False
>>> "HelloWorld".isalpha()
True

En tant que casse, la chaîne vide est évaluée à False lorsqu'elle est utilisée avec "".isalpha() .


str.isupper , str.islower , str.istitle

Ces méthodes testent la capitalisation dans une chaîne donnée.

str.isupper est une méthode qui renvoie True si tous les caractères d'une chaîne donnée sont en majuscule et False sinon.

>>> "HeLLO WORLD".isupper()
False
>>> "HELLO WORLD".isupper()
True
>>> "".isupper()
False

Inversement, str.islower est une méthode qui renvoie True si tous les caractères d'une chaîne donnée sont en minuscule et False .

>>> "Hello world".islower()
False
>>> "hello world".islower()
True
>>> "".islower()
False

str.istitle retourne True si la chaîne donnée est str.istitle le titre; c'est-à-dire que chaque mot commence par un caractère majuscule suivi de caractères minuscules.

>>> "hello world".istitle()
False
>>> "Hello world".istitle()
False
>>> "Hello World".istitle()
True
>>> "".istitle()
False

str.isdecimal , str.isdigit , str.isnumeric

str.isdecimal renvoie si la chaîne est une séquence de chiffres décimaux, appropriée pour représenter un nombre décimal.

str.isdigit inclut des chiffres qui ne sont pas sous une forme appropriée pour représenter un nombre décimal, tel que des chiffres en exposant.

str.isnumeric inclut toutes les valeurs numériques, même si ce ne sont pas des chiffres, telles que des valeurs en dehors de l'intervalle 0-9.

            isdecimal    isdigit   isnumeric

12345        True        True       True
១2߃໔5        True        True       True
①²³🄅₅       False       True       True
⑩⒓          False       False      True
Five         False       False      False

Les bytestrings ( bytes dans Python 3, str dans Python 2), ne supportent que isdigit , qui vérifie uniquement les chiffres ASCII de base.

Comme avec str.isalpha , la chaîne vide a la valeur False .


str.isalnum

Il s'agit d'une combinaison de str.isalpha et de str.isnumeric , en particulier de True si tous les caractères de la chaîne donnée sont alphanumériques , c'est-à-dire qu'ils sont composés de caractères alphabétiques ou numériques:

>>> "Hello2World".isalnum()
True
>>> "HelloWorld".isalnum()
True
>>> "2016".isalnum()
True
>>> "Hello World".isalnum()  # contains whitespace
False

str.isspace

Évalue à True si la chaîne ne contient que des caractères d'espacement.

>>> "\t\r\n".isspace()
True
>>> " ".isspace()
True

Parfois, une chaîne a l'air “vide” mais nous ne savons pas si c'est parce qu'elle contient uniquement des espaces ou pas de caractères du tout.

>>> "".isspace()
False

Pour couvrir ce cas, nous avons besoin d'un test supplémentaire

>>> my_str = ''
>>> my_str.isspace()
False
>>> my_str.isspace() or not my_str
True

Mais le moyen le plus court de tester si une chaîne est vide ou contient simplement des caractères d'espacement est d'utiliser strip (sans arguments, cela supprime tous les caractères blancs avant et après).

>>> not my_str.strip()
True

str.translate: Traduction de caractères dans une chaîne

Python prend en charge une méthode de translate sur le type str qui vous permet de spécifier la table de traduction (utilisée pour les remplacements) ainsi que tous les caractères à supprimer dans le processus.

str.translate(table[, deletechars])
Paramètre La description
table C'est une table de correspondance qui définit le mappage d'un caractère à un autre.
deletechars Une liste de caractères à supprimer de la chaîne.

La méthode maketrans ( str.maketrans dans Python 3 et string.maketrans dans Python 2) vous permet de générer une table de traduction.

>>> translation_table = str.maketrans("aeiou", "12345")
>>> my_string = "This is a string!"
>>> translated = my_string.translate(translation_table)
'Th3s 3s 1 str3ng!'

La méthode translate renvoie une chaîne qui est une copie traduite de la chaîne d'origine.


Vous pouvez définir l'argument de la table sur None si vous devez uniquement supprimer des caractères.

>>> 'this syntax is very useful'.translate(None, 'aeiou')
'ths syntx s vry sfl'

Retirer des caractères de début / fin indésirables d'une chaîne

Trois méthodes permettent de str.strip les caractères de str.strip et de fin d’une chaîne: str.strip , str.rstrip et str.lstrip . Les trois méthodes ont la même signature et toutes les trois renvoient un nouvel objet chaîne avec des caractères indésirables supprimés.


str.strip([chars])

str.strip agit sur une chaîne donnée et supprime (strip) les caractères de str.strip ou de fin contenus dans les chars l'argument; Si les chars ne sont pas fournis ou sont None , tous les espaces sont supprimés par défaut. Par exemple:

>>> "    a line with leading and trailing space     ".strip() 
'a line with leading and trailing space'

Si des chars sont fournis, tous les caractères qu'il contient sont supprimés de la chaîne, qui est renvoyée. Par exemple:

>>> ">>> a Python prompt".strip('> ')  # strips '>' character and space character 
'a Python prompt'

str.rstrip([chars]) et str.lstrip([chars])

Ces méthodes ont une sémantique et des arguments similaires avec str.strip() , leur différence se situe dans la direction de départ. str.rstrip() commence à la fin de la chaîne alors que str.lstrip() se sépare du début de la chaîne.

Par exemple, en utilisant str.rstrip :

>>> "     spacious string      ".rstrip()
'     spacious string'

En utilisant str.lstrip :

>>> "     spacious string      ".rstrip()
'spacious string      '

Comparaisons de chaînes insensibles à la casse

Comparer une chaîne de manière insensible à la casse semble être quelque chose d'anodin, mais ce n'est pas le cas. Cette section ne considère que les chaînes Unicode (la valeur par défaut dans Python 3). Notez que Python 2 peut avoir des faiblesses subtiles par rapport à Python 3 - la gestion unicode ultérieure est beaucoup plus complète.

La première chose à noter est que les conversions de suppression de casse dans Unicode ne sont pas triviales. Il y a du texte pour text.lower() != text.upper().lower() , tel que "ß" :

>>> "ß".lower()
'ß'

>>> "ß".upper().lower()
'ss'

Mais disons que vous vouliez comparer sans "BUSSE" et "Buße" . Heck, vous voulez probablement aussi comparer "BUSSE" et "BUẞE" égaux - c'est la nouvelle forme de capital. La méthode recommandée est d'utiliser le casefold :

Python 3.x 3.3
>>> help(str.casefold)
"""
Help on method_descriptor:

casefold(...)
      S.casefold() -> str
    
     Return a version of S suitable for caseless comparisons.
"""

Ne pas utiliser lower . Si le casefold n'est pas disponible, faire .upper().lower() aide (mais seulement un peu).

Ensuite, vous devriez considérer les accents. Si votre moteur de rendu est bon, vous pensez probablement "ê" == "ê" - mais ce n’est pas le cas:

>>> "ê" == "ê"
False

C'est parce qu'ils sont en fait

>>> import unicodedata

>>> [unicodedata.name(char) for char in "ê"]
['LATIN SMALL LETTER E WITH CIRCUMFLEX']

>>> [unicodedata.name(char) for char in "ê"]
['LATIN SMALL LETTER E', 'COMBINING CIRCUMFLEX ACCENT']

La manière la plus simple de gérer cela est unicodedata.normalize . Vous souhaitez probablement utiliser la normalisation NFKD , mais n'hésitez pas à consulter la documentation. Alors on fait

>>> unicodedata.normalize("NFKD", "ê") == unicodedata.normalize("NFKD", "ê")
True

Pour finir, ceci est exprimé en fonctions:

import unicodedata

def normalize_caseless(text):
    return unicodedata.normalize("NFKD", text.casefold())

def caseless_equal(left, right):
    return normalize_caseless(left) == normalize_caseless(right)

Joindre une liste de chaînes dans une chaîne

Une chaîne peut être utilisée comme séparateur pour joindre une liste de chaînes en une seule chaîne à l'aide de la méthode join() . Par exemple, vous pouvez créer une chaîne où chaque élément d'une liste est séparé par un espace.

>>> " ".join(["once","upon","a","time"])
"once upon a time"

L'exemple suivant sépare les éléments de chaîne avec trois traits d'union.

>>> "---".join(["once", "upon", "a", "time"])
"once---upon---a---time"

Les constantes utiles du module String

Le module de string de Python fournit des constantes pour les opérations liées aux chaînes. Pour les utiliser, importez le module de string :

>>> import string

string.ascii_letters :

Concaténation de ascii_lowercase et ascii_uppercase :

>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'

string.ascii_lowercase :

Contient tous les caractères ASCII minuscules:

>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'

string.ascii_uppercase :

Contient tous les caractères ASCII majuscules:

>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

string.digits :

Contient tous les caractères numériques décimaux:

>>> string.digits
'0123456789'

string.hexdigits :

Contient tous les caractères hexadécimaux:

>>> string.hexdigits
'0123456789abcdefABCDEF'

string.octaldigits :

Contient tous les caractères numériques octaux:

>>> string.octaldigits
'01234567'

string.punctuation :

Contient tous les caractères considérés comme des signes de ponctuation dans les paramètres régionaux C :

>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

string.whitespace :

Contient tous les caractères ASCII considérés comme des espaces:

>>> string.whitespace
' \t\n\r\x0b\x0c'

En mode script, print(string.whitespace) imprimera les caractères réels, utilisez str pour obtenir la chaîne retournée ci-dessus.


string.printable :

Contient tous les caractères considérés imprimables. une combinaison de string.digits , string.ascii_letters , string.punctuation et string.whitespace .

>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'

Inverser une chaîne

Une chaîne peut être inversée à l'aide de la fonction Reverse reversed() intégrée, qui prend une chaîne et renvoie un itérateur dans l'ordre inverse.

>>> reversed('hello')
<reversed object at 0x0000000000000000>
>>> [char for char in reversed('hello')]
['o', 'l', 'l', 'e', 'h']

reversed() peut être inclus dans un appel à ''.join() pour créer une chaîne à partir de l'itérateur.

>>> ''.join(reversed('hello'))
'olleh'

Bien que l'utilisation de reversed() soit plus lisible pour les utilisateurs non initiés de Python, l'utilisation du découpage étendu avec un pas de -1 est plus rapide et plus concise. Ici, essayez de le mettre en œuvre en tant que fonction:

>>> def reversed_string(main_string):
...     return main_string[::-1]
...
>>> reversed_string('hello')
'olleh'

Justifier les chaînes

Python fournit des fonctions pour justifier les chaînes, permettant un remplissage du texte pour faciliter l'alignement des différentes chaînes.

Voici un exemple de str.ljust et de str.rjust :

interstates_lengths = {
    5: (1381, 2222),
    19: (63, 102),
    40: (2555, 4112),
    93: (189,305),
}
for road, length in interstates_lengths.items():
    miles,kms = length
    print('{} -> {} mi. ({} km.)'.format(str(road).rjust(4), str(miles).ljust(4), str(kms).ljust(4)))
  40 -> 2555 mi. (4112 km.)
  19 -> 63   mi. (102  km.)
   5 -> 1381 mi. (2222 km.)
  93 -> 189  mi. (305  km.)

ljust et rjust sont très similaires. Les deux ont un paramètre width et un paramètre facultatif fillchar . Toute chaîne créée par ces fonctions est au moins aussi longue que le paramètre width qui a été transmis à la fonction. Si la chaîne est plus longue que la width , elle n'est pas tronquée. L'argument fillchar , qui fillchar défaut le caractère d'espace ' ' doit être un caractère unique et non une chaîne à caractères multiples.

La ljust fonction Tapis de la fin de la chaîne , il est appelé avec la fillchar jusqu'à ce qu'il soit de width caractères. La fonction rjust le début de la chaîne de la même manière. Par conséquent, le l et le r dans les noms de ces fonctions font référence au côté dans lequel la chaîne d'origine, pas le fillchar , est positionnée dans la chaîne de sortie.

Conversion entre les données str ou bytes et les caractères unicode

Le contenu des fichiers et des messages réseau peut représenter des caractères codés. Ils doivent souvent être convertis en Unicode pour un affichage correct.

Dans Python 2, vous devrez peut-être convertir des données str en caractères Unicode. La valeur par défaut ( '' , "" , etc.) est une chaîne ASCII, les valeurs en dehors de la plage ASCII étant affichées en tant que valeurs échappées. Les chaînes Unicode sont u'' (ou u"" , etc.).

Python 2.x 2.3
# You get "© abc" encoded in UTF-8 from a file, network, or other data source

s = '\xc2\xa9 abc'  # s is a byte array, not a string of characters
                    # Doesn't know the original was UTF-8
                    # Default form of string literals in Python 2
s[0]                # '\xc2' - meaningless byte (without context such as an encoding)
type(s)             # str - even though it's not a useful one w/o having a known encoding

u = s.decode('utf-8')  # u'\xa9 abc'
                       # Now we have a Unicode string, which can be read as UTF-8 and printed properly
                       # In Python 2, Unicode string literals need a leading u
                       # str.decode converts a string which may contain escaped bytes to a Unicode string
u[0]                # u'\xa9' - Unicode Character 'COPYRIGHT SIGN' (U+00A9) '©'
type(u)             # unicode

u.encode('utf-8')   # '\xc2\xa9 abc'
                    # unicode.encode produces a string with escaped bytes for non-ASCII characters

Dans Python 3, vous devrez peut-être convertir des tableaux d'octets (appelés «littéraux d'octets») en chaînes de caractères Unicode. La valeur par défaut est désormais une chaîne Unicode, et ByteString littéraux doit maintenant être entré comme b'' , b"" , etc. Un octet littéral retourne True à isinstance(some_val, byte) , en supposant some_val être une chaîne qui pourrait être codé en octets.

Python 3.x 3.0
# You get from file or network "© abc" encoded in UTF-8

s = b'\xc2\xa9 abc' # s is a byte array, not characters
                    # In Python 3, the default string literal is Unicode; byte array literals need a leading b
s[0]                # b'\xc2' - meaningless byte (without context such as an encoding)
type(s)             # bytes - now that byte arrays are explicit, Python can show that.

u = s.decode('utf-8')  # '© abc' on a Unicode terminal
                       # bytes.decode converts a byte array to a string (which will, in Python 3, be Unicode)
u[0]                # '\u00a9' - Unicode Character 'COPYRIGHT SIGN' (U+00A9) '©'
type(u)             # str
                    # The default string literal in Python 3 is UTF-8 Unicode

u.encode('utf-8')   # b'\xc2\xa9 abc'
                    # str.encode produces a byte array, showing ASCII-range bytes as unescaped characters.

Chaîne contient

Python le rend extrêmement intuitif pour vérifier si une chaîne contient une sous-chaîne donnée. Utilisez simplement l'opérateur in :

>>> "foo" in "foo.baz.bar"
True

Note: tester une chaîne vide donnera toujours True :

>>> "" in "test"
True


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow