我一直在寻找和阅读以前与我类似的问题和答案,但没有找到解决我案件的好方法。
我有2列的csv文件。一个是数值(100、40、350等),另一个是图片标签名称的列表(即computer.jpg)。
我想做的是以升序方式按第一列(即值)对文件进行排序。这也意味着我希望一对值(图像名称)随之随之移动。
这是我到目前为止的内容:
import csv
import operator
sample=open('random.csv', "r")
csv1=csv.reader(sample, delimiter='.')
header=next(csv1, None)
sort= sorted(csv1, key=operator.itemgetter(0))
with open('randomized.csv', "wb") as f:
csv_writer=csv.writer(f, delimiter='.')
if header:
csv_writer.writerow(header)
csv_writer.writerows(sort)Run Code Online (Sandbox Code Playgroud)
但是,结果排序列表如下:100、175、20、250、3。
我尝试了其他一些代码,例如:
sort=csv1.sort(key=lambda row: row[0], reverse=True)Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误消息:AttributeError:'_csv.reader'对象没有属性'sort'
我读到一种选择,它是在排序之前将数字转换为字符串,然后在写入文件之前将其转换回数字,但实际上并没有工具来执行此操作。
有人知道如何把它记下来吗?