Python3:拆分列表并另存为文件 - 如何?

时间:2017-02-12 12:21:57

标签: list python-3.x split

我是Python的新手,所以感谢你的帮助!

我想告诉Python使用一个大的.csv列表并将其拆分为许多只有两列的小列表

  1. 拿这个.csv文件
  2. 始终使用专栏"年"这是第一列
  3. 然后总是使用下一列(for-loop?),从第2列开始,第2列是"对象1",然后第3列是"对象2"等等...
  4. 将每个列表保存为.csv - 现在只包含两列 - 并在第二列之后命名(f.e。" Object1")
  5. 到目前为止,我对此表示赞同:

    import csv
    object = 0
    
    f = open("/home/Data/data.csv")
    
    csv_f = csv.reader(f, delimiter=';', quotechar='|')
    
    writer = csv.writer(csv_f)
    
    for row in csv_f:
        writer("[0],[object]")
    
        object += 1
    
    f.close()
    

1 个答案:

答案 0 :(得分:1)

您的代码正在尝试打开相同的文件进行读写,这可能会产生意外结果。

将您的问题视为一系列步骤;解决问题的一种方法是:

  1. 打开大文件
  2. 阅读文件的第一行,其中包含列标题。
  3. 浏览列标题(大csv文件的第一行),跳过第一行,然后:
    1. 对于每个列标题,创建一个新的csv文件,其中文件名是列的名称。
    2. 获取第一列的值,加上当前正在读取的列的值,并将其写入文件。
    3. 重复阅读所有列标题
    4. 关闭文件
  4. 关闭大文件。
  5. 以上是与上述相同的方法,充分利用了Python的csv阅读功能:

    import csv
    
    with open('big-file.csv') as f:
       reader = csv.reader(f, delimiter=';', quotechar='|')
       titles = next(reader)
       for index, column_name in enumerate(titles[1:]):
          with open('{}.csv'.format(column_name), 'w') as i:
             writer = csv.writer(i, delimiter=';', quotechar='|')
             for row in reader:
                writer.writerow((row[0],row[index+1]))
          f.seek(0) # start from the top of the big file again
          next(reader) # skip the header column