我正在寻找一种优雅的方式来实现以下目标:我有一个列名列表(大小是动态的,取决于源文件):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 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
使用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)
)
月关宝盒
TA贡献1772条经验 获得超5个赞
使用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))'
添加回答
举报
0/150
提交
取消