Python使用join拼接值出错,如何生成正确的建表语句字段格式?
问题分析与解决
核心问题
你定义的strsql元组存在结构错误:Python中相邻的字符串会自动拼接,比如'Col1' 'TEXT'会被解析成单个字符串'Col1TEXT',而非你预期的('Col1', 'TEXT')。这导致你用i[0]时,取的是每个拼接后字符串的第一个字符,所以输出都是t.$1:C这类结果。
修正方案
- 修正
strsql的结构:将每个列名和数据类型包装成子元组,确保每个元素是包含两个值的元组:
strsql = ( ('Col1', 'TEXT'), (' col2', 'NUMBER(38, 0)'), ('col3', 'TEXT'), ('col4', 'TEXT'), ('col5', 'TIMESTAMP_NTZ') )
- 调整print语句(可选):如果需要保留
col2前的空格,直接使用原语句即可;如果想去除多余空格,可以给i[0]加上.strip():
# 保留空格的版本,匹配你的期望输出 print(', '.join(['t.$1:' + i[0] for i in strsql])) # 去除空格的版本(输出t.$1:col2而非t.$1: col2) print(', '.join(['t.$1:' + i[0].strip() for i in strsql]))
运行修正后的代码,就能得到你期望的输出:t.$1:Col1, t.$1:col2 , t.$1:col3, t.$1:col4, t.$1:col5。
内容的提问来源于stack exchange,提问作者CanIget eb1
相关产品推荐
相关产品推荐

