Équivalent de String Builder en Python

Manav Narula 30 janvier 2023
  1. Utilisez la fonction join()
  2. Utilisez la méthode de concaténation de chaînes
  3. Utilisez le module StringIO
Équivalent de String Builder en Python

Une chaîne est une collection de caractères et est un objet immuable. Nous devons spécifier un nouveau bloc de mémoire pour chaque changement dans une chaîne plutôt que de modifier le bloc déjà existant.

La classe StringBuilder dans la programmation C# crée des objets chaîne mutables et permet l’allocation dynamique de la mémoire. Nous n’avons pas de tels cals en Python, mais nous pouvons utiliser la concaténation de chaînes pour y parvenir et créer de longs objets chaîne efficaces.

L’idée principale derrière cela est que nous prenons une liste de chaînes et les joignons pour créer de grandes chaînes.

Utilisez la fonction join()

Pour joindre des chaînes à partir d’une liste, nous pouvons utiliser la fonction join(). La méthode join() retourne une chaîne après avoir combiné tous les éléments d’un objet itérable. L’extrait de code suivant explique cela.

mylist = ["abcd" for i in range(5)]
mystring = "".join(mylist)
print(mystring)

Production:

abcdabcdabcdabcdabcd

Il existe de nombreuses autres façons de concaténer des chaînes à partir d’une liste, mais la fonction join() est considérée comme la plus rapide de toutes.

Utilisez la méthode de concaténation de chaînes

Nous pouvons facilement concaténer des chaînes à partir d’une liste en utilisant la boucle for et l’opérateur +. L’exemple suivant montre comment.

mylist = ["abcd" for i in range(5)]
mystring = ""
for i in range(len(mylist)):
    mystring += mylist[i]
print(mystring)

Production:

abcdabcdabcdabcdabcd

Utilisez le module StringIO

Le module StringIO permet de lire et d’écrire des chaînes dans la mémoire tampon. Nous créons un objet StringIO et l’écrivons dans cet objet après avoir parcouru la liste. Nous pouvons imprimer la chaîne requise en utilisant la méthode getvalue(). Par exemple,

file_str = StringIO()
for i in range(len(mylist)):
    file_str.write(mylist[i])
print(file_str.getvalue())

Production:

abcdabcdabcdabcdabcd

Nous pouvons également créer notre propre classe qui peut ajouter des chaînes en utilisant les fonctions du module StringIO. Par exemple,

from io import StringIO


class StringBuilder:
    _file_str = None

    def __init__(self):
        self._file_str = StringIO()

    def Append(self, str):
        self._file_str.write(str)

    def __str__(self):
        return self._file_str.getvalue()


sb = StringBuilder()

sb.Append("Hello ")
sb.Append("World")

print(sb)

Production:

Hello World
Auteur: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Article connexe - Python String