Pourquoi `.join()` produit-il des résultats inattendus lors de la concaténation d'une chaîne et d'un objet de type octets ?

Linda Hamilton
Libérer: 2024-11-12 13:26:02
original
376 Les gens l'ont consulté

Why Does `.join()` Produce Unexpected Results When Concatenating a String and a Bytes-like Object?

Qu'est-ce que .join() et comment fonctionne-t-il dans la concaténation de chaînes ?

La méthode .join() de Python est couramment utilisée pour les chaînes enchaînement. Cependant, en testant l’exemple fourni, il a donné des résultats inattendus. Comprendre le but et l'utilisation de cette méthode peut clarifier pourquoi elle s'est comportée comme elle l'a fait.

La méthode .join() opère sur une chaîne et prend un itérable d'éléments comme argument. Il insère la chaîne spécifiée entre chaque élément de l'itérable lors de la concaténation.

Par exemple :

",".join(["a", "b", "c"])
# Output: 'a,b,c'
Copier après la connexion

Dans l'exemple fourni :

array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring().join(strid)
Copier après la connexion

Le tostring() La méthode convertit le tableau de caractères en un objet de type octets. Cet objet de type octets est ensuite utilisé comme entrée pour .join() avec la chaîne "595".

Cependant, le point clé à comprendre est que la chaîne "595" est traitée comme une liste de ses caractères individuels, c'est-à-dire ["5", "9", "5"]. Par conséquent, ".join()" opère sur cette liste, en insérant l'objet de type octet entre chaque caractère :

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^                 ^                 ^
Copier après la connexion

Chaque "5", "9", "5" dans la sortie indique l'insertion de l'objet de type octet entre les caractères de la chaîne d'origine.

Pour obtenir la concaténation souhaitée, l'opérateur peut être utilisé à la place :

array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid
Copier après la connexion

Cette approche concatène directement l'objet de type octet objet avec la chaîne "595", produisant le résultat souhaité sans aucune insertion entre les caractères.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal