我在Linux Mint上使用Python 3.4。SQL语句以长列表形式返回数据库数据。我可以遍历列表,但需要正确格式化输出。我可以在列表中设置一个定界符,例如'@'来指示行数据的结尾,但是我不知道如何一次从列表中读回该数据1行('@'表示结尾排)。使用split()尝试过,但是列表中的数据混合在一起,包含整数值和字符串,因此split()失败。请帮忙!
loop = 1
for data in orders: #loop all values returned (main loop)
#loop 1, set dupe-check variable
if data[0] not in cdupes:
cdupes.append(data[0]) #store customer name for next loop
if loop > 1:
rowdata.append("@")
for val in range(0, 4): #sql always returns 4 columns per row
rowdata.append(data[val]) #name, id, productline, ordertotal
#if customer name is a duplicate, append remaining customer productlines data
elif data[0] in cdupes: #customer name [0] in cdupes
for val in range(2, 4):
rowdata.append(data[val]) #store id, productline, ordertotal
loop += 1
print(rowdata)
我不确定我的问题是否明确,但是无论如何我已经解决了这个问题。我的SQL语句将返回客户名称,客户ID,产品线和产品线清单,即每个客户每个产品线的总订单。问题在于,SQL每个客户返回多行,因为每个客户可能有多个生产线。例如...
Alpha干邑242老爷车173998.00
Alpha干邑242飞机16655.22
Alpha干邑242船18279.26
Alpha干邑242老爷车8250.30
每行都存储在一个list []中,我需要删除重复的客户名+ id,并将所有值以1 col / row(每客户)格式存储,并在生产线无值的地方输入0.00:
示例:
CustName ID Cl汽车自行车飞机火车船舶卡车和老爷车老式汽车
Alpha干邑242 173998.00 0.00 16655.22 0.00 18279.26 0.00 8250.30
我上面发布的代码将删除重复的客户名称和ID,并将数据重组为1个唯一的行,但没有缺少的列(例如,自行车,火车等)。
由于某些产品线没有可用的价值,因此我需要插入这些产品线。我使用listcomparator来获得产品线值在唯一行中的位置的索引。
示例:productlines = [“经典汽车”,“自行车”,“飞机”,“火车”,“船舶”,“卡车与公共汽车”,“复古”,“汽车”]
for x in range(0, len(productlines):
try
idx = rowdata.index(productlinelines[]) #give me the index of productline if found
except ValueError:
row.append(format(0.00, '.2f')) #insert 0.00 if no productline in unique row
else:
row.append(format(rowdata[idx+1], '.2f')) #grab the value of the productline line and insert into correct column & format to 2 decimal
这只是我用来解决此问题的功能的摘录。我希望这个想法可以对其他人有所帮助,但是我相信还有其他方法可以做到这一点。我对Python很陌生。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句