基于列中的单元格值创建单个行

时间:2016-11-14 20:07:13

标签: python database excel csv

我希望获取一个CSV文件并使用python 2.7对文件进行排序,以获得基于块和批次的两列的单个值。我的数据现在在下面的链接中显示:

Beginning

我希望能够使用Python创建额外的行以将其自动化为新的CSV,其中当在新CSV上绘制时值将如下所示

End Result

所以我知道我需要读取行和列,并根据批次列的单元格值,如果有","然后该行将被复制到另一个csv中的下一行,并且只复制第一列之前的所有值,然后复制第二列,第三列等。

分离出逗号后,范围将以类似的方式在第三个CSV中进行管理。如果只有一个值,整个行将按原样复制。

感谢您提供的帮助。

1 个答案:

答案 0 :(得分:0)

这应该有用。

  1. 在Windows上以二进制模式打开文件,否则你会得到两个新行。
  2. 我假设行由;分隔,因为单元格包含,
  3. 首先按,拆分,然后检查范围
  4. print line用于调试
  5. 错误检查留给读者练习。
  6. 代码:

    import csv
    
    file_in = csv.reader(open('input.csv', 'rb'), delimiter=';')
    file_out = csv.writer(open('output.csv', 'wb'), delimiter=';')
    
    for i, line in enumerate(file_in):
        if i == 0:
            # write header
            file_out.writerow(line)
            print line
            continue
    
        for j in line[1].split(','):
            if len(j.split('-')) > 1:
                # lines with -
                start = int(j.split('-')[0])
                end = int(j.split('-')[1])
                for k in xrange(start, end + 1):
                    line[1] = k
                    file_out.writerow(line)
                    print line
            else:
                # lines with ,
                line[1] = j
                file_out.writerow(line)
                print line