Python使用分隔符拆分整数和字符串(混合)列表?

时间:2014-10-07 14:31:44

标签: python

我在Linux Mint上使用Python 3.4。 SQL语句将DB数据返回到长列表中。我可以很好地遍历列表,但需要正确格式化输出。我可以在列表中设置一个分隔符,例如'@'表示行数据的结尾,但我不知道如何从列表中一次读回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)

1 个答案:

答案 0 :(得分:0)

我不确定我的问题是否清楚,但无论如何我已经解决了这个问题。我的SQL语句将返回customernames,customerid,productlines和productlinettls,即每个客户的每个产品线的总订单。问题是SQL每个客户返回多行,因为每个客户可能有多个产品线。例如...
Alpha Cognac 242 Classic Cars 173998.00
Alpha Cognac 242 Planes 16655.22
Alpha Cognac 242船舶18279.26
Alpha Cognac 242 Vintage Cars 8250.30

每一行都存储在list []中,我需要删除重复的客户名称+ ID并将所有值存储在1 col / row(每个cust)格式中,并将0.00放在没有productline值的情况下:

示例
CustName ID Cl汽车自行车飞机火车船卡车和公共汽车老爷车
Alpha Cognac 242 173998.00 0.00 16655.22 0.00 18279.26 0.00 8250.30

我上面发布的代码会删除重复的custnames + ID,并将数据重组为1个唯一的行,但没有缺少的列(即自行车,火车等)。

由于某些产品系列没有值,我需要插入这些值。我使用listcomparator来获取productline值在唯一行中的位置索引 例: productlines = [' Classic Cars'' Bikes'' Planes',' Trains'' Ships',& #39; Trucks& Buses',' Vintage',' Cars']

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很陌生。