Skip to content

Obtenir la longueur d’une chaîne (nombre de caractères) en Python

En Python, vous pouvez obtenir la longueur d’une chaîne str (= nombre de caractères) avec la fonction intégrée len().

Cet article décrit le contenu suivant.

  • Obtenir la longueur d’une chaîne (nombre de caractères) avec len()
  • Caractères pleine chasse et demi-chasse
  • Séquences d’échappement et caractères spéciaux
  • Sauts de ligne

Voir l’article suivant pour l’utilisation de len() pour d’autres types tels que list.

Obtenir la longueur d’une chaîne (nombre de caractères) avec len()

En passant une chaîne à la fonction intégrée len(), sa longueur (nombre de caractères) est renvoyée sous la forme d’une valeur entière.

s = 'abcde'

print(len(s))
# 5

Caractères pleine chasse et demi-chasse

Les caractères pleine chasse et demi-chasse sont traités comme un seul caractère (longueur : 1).

s = 'あいうえお'

print(len(s))
# 5

s = 'abcdeあいうえお'

print(len(s))
# 10

Séquences d’échappement et caractères spéciaux

En Python, les caractères spéciaux tels que TAB sont représentés par une barre oblique inverse, comme t. La barre oblique inverse elle-même est représentée par \.

Ces caractères spéciaux tels que t et \ sont traités comme un seul caractère.

s = 'atb\c'
print(s)
# a bc

print(len(s))
# 5

Dans les chaînes brutes où les séquences d’échappement ne sont pas traitées spécialement, la chaîne est traitée telle quelle sans être interprétée comme des caractères spéciaux. Le nombre de caractères est également compté tel quel.

s = r'atb\c'
print(s)
# atb\c

print(len(s))
# 7

De plus, la séquence d’échappement Unicode uXXXX est traitée comme un seul caractère.

s = 'u3042u3044u3046'
print(s)
# あいう

print(len(s))
# 3

Les séquences d’échappement Unicode ne sont pas non plus traitées spécialement dans les chaînes brutes.

s = r'u3042u3044u3046'
print(s)
# u3042u3044u3046

print(len(s))
# 18

Sauts de ligne

n (LF : saut de ligne) est également traité comme un seul caractère.

s = 'anb'
print(s)
# a
# b

print(len(s))
# 3

Notez que si rn (CR : retour chariot + LF : saut de ligne) est utilisé, il est compté comme deux caractères, r et n.

s = 'arnb'
print(s)
# a
# b

print(len(s))
# 4

Si n et rn sont mélangés, le nombre de caractères dans chaque section de retour à la ligne est différent.

s = 'abcnabcdrnab'
print(s)
# abc
# abcd
# ab

print(len(s))
# 12

Si n et rn sont mélangés, ou si vous ne savez pas lequel est utilisé, utilisez la méthode splitlines(), qui renvoie une liste divisée par lignes.

print(s.splitlines())
# ['abc', 'abcd', 'ab']

Le nombre d’éléments dans la liste récupérée avec splitlines() est égal au nombre de lignes.

print(len(s.splitlines()))
# 3

Le nombre de caractères dans chaque ligne peut être obtenu en utilisant des compréhensions de liste.

print([len(line) for line in s.splitlines()])
# [3, 4, 2]

Le nombre total de caractères peut être calculé avec sum().

Une version génératrice de la compréhension de liste (expression génératrice) est utilisée ici. Les expressions de générateur sont entourées de () au lieu de [], mais lorsqu’elles sont utilisées entre () comme dans cet exemple, () peut être omis.

print(sum(len(line) for line in s.splitlines()))
# 9

Pour plus d’informations sur les sauts de ligne, consultez l’article suivant.