猿问

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

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


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


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”循环更优雅。


翻阅古今
浏览 128回答 2
2回答

宝慕林4294392

使用str.join和str.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)     )

月关宝盒

使用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))'
随时随地看视频慕课网APP

相关分类

Python
我要回答