【问题标题】:Python3: split up list and save as file - how to?Python3:拆分列表并另存为文件 - 如何?
【发布时间】:2017-02-12 12:21:57
【问题描述】:

我对 Python 有点陌生,所以谢谢你的帮助!

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

  1. 获取此 .csv 文件
  2. 始终使用第一列“年份”
  3. 然后总是取下一列(for-loop?),从“Object1”的第 2 列开始,然后是“Object2”的第 3 列,依此类推...
  4. 将每个列表另存为 .csv - 现在仅包含两列 - 并在第二列之后命名(例如“Object1”)

到目前为止,我已经做到了:

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()

【问题讨论】:

    标签: list python-3.x split


    【解决方案1】:

    您的代码试图打开同一个文件进行读写,这可能会产生意想不到的结果。

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

    1. 打开大文件
    2. 读取文件的第一行,其中包含列标题。
    3. 浏览列标题(大 csv 文件的第一行),跳过第一行,然后:
      1. 为每个列标题创建一个新的 csv 文件,其中文件名是列的名称。
      2. 将第一列的值加上您当前正在读取的列的值写入文件。
      3. 重复直到读取所有列标题
      4. 关闭文件
    4. 关闭大文件。

    这里是与上面相同的方法,利用 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 2020-09-17
      • 1970-01-01
      • 2022-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多