繁体   English   中英

根据列中的单元格值创建单个行

[英]Creating Individual Rows with based on a cell value in a column

我正在寻找一个CSV文件,并使用python 2.7对文件进行排序,以基于一个块和很多的两列获取单个值。 我的数据现在看起来像下面的链接:

开始

我希望能够使用Python将很多价值自动创建为新的CSV,其中的价值在新CSV上绘制时看起来像这样

最终结果

因此,我知道我需要读取行和列,并基于手数列的单元格值(如果有“”),那么该行将被复制到另一个csv中的下一行,并且所有值将被复制到第一个csv中列将仅被复制,然后第二,第三等。

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

多谢您的协助。

这应该工作。

  1. 在Windows上,以二进制模式打开文件,否则会出现双换行。
  2. 我假设行由;分隔; 因为细胞中含有,
  3. 首先除以,然后检查范围
  4. print line用于调试
  5. 错误检查留给读者练习。

码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM