Python 使用列表创建具有重复片段的字符串
我正在寻找一种优雅的方式来实现以下目标: 我有一个列名列表(大小是动态的,取决于源文件):Python 使用列表创建具有重复片段的字符串,python,string,list,format,concatenation,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) )' 我可以使用以下方法生成
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)
我想知道是否可以使用format函数或比“for”循环更优雅的东西来替换带有列名的部分
谢谢 使用
str.join
和str.format
Ex:
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)
)
输出:
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)
)
用于平行连接柱及其长度
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))'
注意像这样的SQL注入吗
a=a+'[%s]varchar(%s)\n'%(列[i],列[i])