Python 中字符串生成器的完整指南

496 阅读3分钟

Python中的字符串对象是不可改变的,这意味着每次将字符串分配给一个变量时,都会在内存中创建一个新的对象来描述一个新的值。StringBuilder 对象和 String 对象一样,只是它们可以被修改。Java中的StringBuilder类也被用来创建可变的字符串对象。

Python字符串生成器

Python中是否有一些字符串类?没有,Python中没有内置的字符串生成器。因此,不存在一一对应的关系。然而,这背后有一个逻辑上的原因。在Python中构建长字符串有时会导致代码运行时间过长。

尽管在Python的最新版本中,有一些方法可以构建字符串。 一种常见的从碎片中构建大字符串的方法是增长一个字符串列表,并在完成后加入它。这是一个经常使用的 Python 习惯用语。 要建立带有格式化的数据的字符串,你可以单独进行格式化。

在 Python 中创建自定义字符串生成器

要创建一个自定义的字符串生成器,请使用以下方法之一。

  1. 使用string.join()方法
  2. 使用字符串连接法
  3. 使用 StringIO 模块

使用string.join()方法

string join()是一个内置的Python方法,它返回与迭代器中的元素相连接的字符串。例如,我们可以使用 join() 函数来连接一个列表中的字符串。

使用 join() 的字符串生成器的例子

marvel = ['Loki' for i in range(7)]
studios = "".join(marvel)
print(studios)

输出

LokiLokiLokiLokiLokiLokiLoki

你可以看到,它打印了七次Loki。

使用字符串连接法

要连接一个列表中的字符串,可以使用连接运算符(+)和for循环

字符串生成器使用字符串连接的例子

marvel = ['Loki' for i in range(7)]
studios = ""

for i in range(len(marvel)):
    studios += marvel[i]
print(studios)

输出

LokiLokiLokiLokiLokiLokiLoki

使用StringIO模块

StringIO是一个内置的Python模块,可以在内存缓冲区中读写字符串。首先,我们创建一个StringIO对象,并在列表中循环后写入它。然后我们可以使用**getvalue()**方法打印所需的字符串。

使用StringIO的字符串生成器的例子

为了使用StringIO模块,你需要在文件的头部导入它:

from io import StringIO

现在,创建一个StringBuilder 类并定义该类的三个方法:

class StringBuilder:
    _file_str = None

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

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

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

Add()方法将字符串追加到该函数中,_str_()方法返回串联后的字符串。

最后一步是通过创建该类的对象来调用这些函数:

string_builder = StringBuilder()

string_builder.Add("Snyder ")
string_builder.Add("Cut ")
string_builder.Add("2021")

print(string_builder)

请看下面的完整代码:

from io import StringIO


class StringBuilder:
    _file_str = None

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

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

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


string_builder = StringBuilder()

string_builder.Add("Snyder ")
string_builder.Add("Cut ")
string_builder.Add("2021")

print(string_builder)

输出

Snyder Cut 2021

我们得到了我们所期望的串联的字符串。

Python字符串生成器教程到此结束。