Equivalente de String Builder en Python

Manav Narula 30 enero 2023
  1. Utilice la función join()
  2. Utilice el método de concatenación de cadenas
  3. Utilice el módulo StringIO
Equivalente de String Builder en Python

Una cadena es una colección de caracteres y es un objeto inmutable. Tenemos que especificar un nuevo bloque de memoria para cada cambio en una cadena en lugar de alterar el bloque ya existente.

La clase StringBuilder en la programación C# crea objetos de cadena mutables y permite la asignación de memoria dinámica. No tenemos tales calss en Python, pero podemos usar la concatenación de cadenas para lograr esto y crear objetos de cadena largos y eficientes.

La idea principal detrás de esto es que tomamos una lista de cadenas y las unimos para construir cadenas grandes.

Utilice la función join()

Para unir cadenas de una lista, podemos usar la función join(). El método join() devuelve una cadena después de combinar todos los elementos de un objeto iterable. El siguiente fragmento de código explica esto.

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

Producción :

abcdabcdabcdabcdabcd

Hay muchas otras formas de concatenar cadenas de una lista, pero la función join() se considera la más rápida de todas.

Utilice el método de concatenación de cadenas

Podemos concatenar fácilmente cadenas de una lista utilizando el bucle for y el operador +. El siguiente ejemplo muestra cómo.

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

Producción :

abcdabcdabcdabcdabcd

Utilice el módulo StringIO

El módulo StringIO se puede utilizar para leer y escribir cadenas en el búfer de memoria. Creamos un objeto StringIO y lo escribimos en este objeto después de recorrer la lista. Podemos imprimir la cadena requerida usando el método getvalue(). Por ejemplo,

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

Producción :

abcdabcdabcdabcdabcd

También podemos crear una clase propia que pueda agregar cadenas usando funciones del módulo StringIO. Por ejemplo,

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)

Producción :

Hello World
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

Artículo relacionado - Python String