如何获得可变字符串?

m9_*_*psy 0 python python-3.x

我正在生成sql查询并在我的字符串上执行了很多+ =操作.看起来像:

insert_string = 'INSERT INTO ' + table_name + ' VALUES '
for row in data_frame.iterrows():
        raw_row = row[1].values
        insert_string += str(tuple(raw_row))
Run Code Online (Sandbox Code Playgroud)

因此,如果我的insert_string是不可变的,则每个+ =操作都会创建新的字符串.例如,在C#中有StringBuilder类,可以初始化具有给定容量的空字符串.我怎么能用Python做到这一点?

Raf*_*erm 5

也许最常见的方法是创建所有部分的列表,并使用该str.join方法将它们连接起来,如下所示:

pieces = ['a', 'b', 'c']
text = ''.join(pieces)
assert text == 'abc'
Run Code Online (Sandbox Code Playgroud)

请注意,您将join分隔符之间调用方法.在前面的示例中,这是空字符串,但在您的情况下,您可能实际上需要类似空格甚至换行符的内容:

pieces = ['a', 'b', 'c']
text = '\n'.join(pieces)
Run Code Online (Sandbox Code Playgroud)

此外,您可以通过使用io.StringIO类获得类似文件的界面:

with io.StringIO() as query_str:
    query_str.write('INSERT INTO ')
    query_str.write(table_name)
    query_str.write(' VALUES ')
    for row in data_frame.iterrows():
        raw_row = row[1].values
        query_str.write(str(tuple(raw_row)))
    # Use query_str.getvalue(), as it will be deleted
    # when the 'with' scope is finished.
Run Code Online (Sandbox Code Playgroud)