使用列表创建具有重复片段的字符串

时间:2018-08-29 08:02:07

标签: python string list format concatenation

我正在寻找一种实现以下目标的优雅方法:

我有一个列名列表(大小是动态的,取决于源文件):

columns = ['col1', 'col2', 'col3']

和列大小列表:

leng = [20, 30, 15]

我想实现字符串:

a = 'CREATE TABLE dbo.table
     (
      [col1] varchar(20)
     ,[col2] varchar(30)
     ,[col3] varchar(15)
     )'

我可以使用以下方法生成它:

a = 'CREATE TABLE dbo.table\n(\n('

for i in range(len(columns)):
    a = a + '[' + col[i] + '] varchar(' + str(leng[i]) + ')\n'

a = a + ')'

print(a)

我想知道是否可以使用格式函数替换具有列名的部分,或者比“ for”循环更优雅。

谢谢!

2 个答案:

答案 0 :(得分:0)

使用str.joinstr.format

例如:

columns = ['col1', 'col2', 'col3']
leng = [20, 30, 15]

sampleStr = """CREATE TABLE dbo.table
     (
      {}
     )"""

print( sampleStr.format(",".join(["[{}] varchar({})".format(i, j) for i,j in zip(columns, leng)])) )

输出:

CREATE TABLE dbo.table
     (
      [col1] varchar(20),[col2] varchar(30),[col3] varchar(15)
     )

答案 1 :(得分:0)

使用zip来并行连接列及其长度。

a = ('CREATE TABLE dbo.table (' 
     + ', '.join(['[{}] varchar({})'.format(col, n) 
                  for col, n in zip(columns, leng)])
     + ')'
     )

>>> a
'CREATE TABLE dbo.table ([col1] varchar(20), [col2] varchar(30), [col3] varchar(15))'