簡體   English   中英

無法從CSV文件中提取數據,對其進行排序,然后將該排序后的列表寫入另一個CSV文件中

[英]Trouble with extracting data from a CSV file, sorting it and then writing that sorted list into another CSV file

我正在嘗試從CSV文件中讀取數據,以python對其進行排序,然后將其寫入另一個CSV文件中。 我不確定如何將已排序的列表拆分為正確的列。

輸出文件將打印出完整的列表,我不知道如何拆分列表並將其輸出到每一列的csv文件中。

這是CSV文件的代碼段

Jack,M,1998

Bill,F,2006

Kat,F,1999

Jess,F,2009

Alexander,M,1982

以及我的代碼,以便對我要執行的操作提供一些見解。

import csv
import operator

   US = open('Test.csv', 'r')#Unsorted
   S = open('TestSorted.csv', 'w')#Sorted

def sortinput():
            option = input('Sort by name, gender or year?: ')
            if option == "name":
                choice = 0
            elif option == "gender":
                choice = 1
            elif option == "year":
                choice = 2
            else:
                print('Invalid Input')

            csv1 = csv.reader(US, delimiter=',')
            sort = sorted(csv1, key=operator.itemgetter(choice))

            for eachline in sort:
                    print (eachline)

            with S as csvfile:
                    fieldnames = ['Name', 'Gender', 'Year']
                    csv2 = csv.DictWriter(csvfile, fieldnames=fieldnames)
                    csv2.writeheader()
                    for eachline in sort:
                            csv2.writerow({'Name': sort[0] ,'Gender': sort[1],'Year':sort[2][enter image description here][1]})

可以使用csv.writer代替csv.DictWriter 循環如下所示

  with S as csvfile:
      fieldnames = ['Name', 'Gender', 'Year']
      csv2 = csv.writer(csvfile,quoting=csv.QUOTE_ALL)
      csv2.writerow(fieldnames)
      csv2.writerow(sort)

代替sort[0]等:

    for eachline in sort:
        csv2.writerow({'Name': sort[0], 'Gender': sort[1], 'Year': sort[2]}) 

您的意思是eachline[0]等:

    for eachline in sort:
        csv2.writerow({'Name': eachline[0], 'Gender': eachline[1], 'Year': eachline[2]})

sort[0]sort[1]sort[2]指的是文件的三行,而不是一行的三個字段。)

修復該問題后,CSV輸出看起來像您想要的:

Name,Gender,Year
Alexander,M,1982
Bill,F,2006
Jack,M,1998
Jess,F,2009
Kat,F,1999

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM