我已将csv文件中的数据存储到列表中,并且该列表包含所有字符串元素。 我想使用第一列或第一元素(字符串)对该列表进行排序。我正在考虑将该字符串转换为整数,然后使用list.sort()函数。 这是我的代码,但是由于它将第一个元素作为字符串而不是整数,因此无法正常工作.csv中的一行看起来像 228,Sieur de Duplessis(Le),24.2,47,“ Sharp,lactic” 我想将第一列element(228)转换为整数,然后进行排序。怎么办?
sample = open('file.csv', 'r')
data = csv.reader(sample, delimiter=',')
list_cheese = [] # empty list declaration
next(data) # skip first line in csv file, column names
for row in sample:
list_cheese.append(row)
list_cheese.sort(key=operator.itemgetter(0))
# print sorted list items
for elem in list_cheese:
print elem
file.csv具有超过2000行,但我要共享前三行以提供一些csv文件内容。
CheeseId,CheeseNameEn,CheeseNameFr,ManufacturerNameEn,ManufacturerNameFr,ManufacturerProvCode,ManufacturingTypeEn,ManufacturingTypeFr,WebSiteEn,WebSiteFr,FatContentPercent,MoisturePercent,ParticularitiesEn,ParticularitiesFr,FlavourEn,FlavourFr,CharacteristicsEn,CharacteristicsFr,RipeningEn,RipeningFr,Organic,CategoryTypeEn,CategoryTypeFr,MilkTypeEn,MilkTypeFr,MilkTreatmentTypeEn,MilkTreatmentTypeFr,RindTypeEn,RindTypeFr,LastUpdateDate
228,,Sieur de Duplessis (Le),,Fromages la faim de loup,NB,Farmstead,Fermière,,,24.2,47,,,"Sharp, lactic",Marquée et lactée,Uncooked,Pâte non cuite,9 Months,9 mois,0,Firm Cheese,Pâte ferme,Ewe,Brebis,Raw Milk,Lait cru,Washed Rind,Croûte lavée,2016-02-03
242,,Tomme Le Champ Doré,,Fromages la faim de loup,NB,Farmstead,Fermière,,,24.2,47.9,,,"Sharp, lactic, lightly caramelized","Marquée, lactée et légèrement caramélisée",Uncooked,Pâte non cuite,,,0,Semi-soft Cheese,Pâte demi-ferme,Cow,Vache,Raw Milk,Lait cru,Washed Rind,Croûte lavée,2016-02-03
301,Provolone Sette Fette (Tre-Stelle),Provolone Sette Fette (Tre-Stelle),Tre Stelle (Arla Foods),,ON,Industrial,Industrielle,htt
答案 0 :(得分:0)
您可以遍历循环,如下所述将当前元素类型从String转换为int,确保您也可以使用lambda进行此操作。
for element in my_list:
... print(element)
... element_int = int(element)
here, if element itself contains a list then,
you can further access its elements as element[0] and then convert it to int.
答案 1 :(得分:0)
这应该基于每一行的第一个字段执行数字排序:
sample = open('file.csv', 'r')
data = csv.reader(sample, delimiter=',')
list_cheese = list(data)[1:]
list_cheese.sort(key=lambda fields: int(fields[0]))
# print sorted list items
for elem in list_cheese:
print elem
答案 2 :(得分:0)
这是一个完整的示例,将其读取,排序并写回到输出文件中。
我使用内置的csv
模块来简化读写操作。
import csv
with open('input.csv', mode='r') as csv_file:
rows = list(csv.DictReader(csv_file))
headers = rows[0] if rows else [] # Use the first row as the headers
rows.sort(key=lambda x: int(x['CheeseId'])) # Sort by the CheeseId as an int
with open('output.csv', mode='w') as cheese_file:
dict_writer = csv.DictWriter(cheese_file, headers)
dict_writer.writeheader() # Write the headers
dict_writer.writerows(rows) # Write the rows