[英]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.