【发布时间】:2018-05-05 12:05:12
【问题描述】:
我有三个 csv 文件,每个文件都有三个命名列,“Genus”、“Species”和“Source”。我将文件合并到一个新文档中,现在我需要按字母顺序排列列,首先按属,然后按物种。我想我可以通过首先按字母顺序排列物种,然后是属,然后它们应该按正确的顺序排列,但我无法在网上找到任何解决如何对命名的字符串列进行排序的东西。我尝试了很多不同的排序方式,但要么没有改变任何东西,要么用最后一个字符串替换了第一列中的所有字符串。
这是我合并文件的代码:
import csv, sys
with open('Footit_aphid_list_mod.csv', 'r') as inny:
reader = csv.DictReader(inny)
with open('Favret_aphid_list_mod.csv', 'r') as inny:
reader1 = csv.DictReader(inny)
with open ('output_al_vonDohlen.csv', 'r') as inny:
reader2 = csv.DictReader(inny)
with open('aphid_list_complete.csv', 'w') as outty:
fieldnames = ['Genus', 'Species', 'Source']
writer = csv.DictWriter(outty, fieldnames = fieldnames)
writer.writeheader()
for record in reader:
writer.writerow(record)
for record in reader1:
writer.writerow(record)
for record in reader2:
writer.writerow(record)
for record in reader:
g = record['Genus']
g = sorted(g)
writer.writerow(record)
inny.closed
outty.closed
【问题讨论】:
-
首先将所有数据存储在行列表中然后排序,然后写回文件。
-
您可能会发现此页面很有用:stackoverflow.com/questions/4233476/…
标签: python csv sorting python-2.x