为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻阅古今 2021-06-04 10:05:53
我正在寻找一种优雅的方式来实现以下目标:我有一个列名列表(大小是动态的,取决于源文件):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)

     )


查看完整回答
反对 回复 2021-06-06
?
月关宝盒

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))'


查看完整回答
反对 回复 2021-06-06
  • 2 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信