当前位置: 首页 > 面试题库 >

用Python排序CSV

唐星晖
2023-03-14
问题内容

我认为使用Python在多个文本/数字字段上对CSV文件进行排序将是一个已经解决的问题。但是我找不到任何示例代码,只有专注于对日期字段进行排序的特定代码除外。

如何在多个字段上按顺序对相对较大的CSV文件(数万行)排序?

Python代码示例将不胜感激。


问题答案:

这是Alex的答案,经过重新设计以支持列数据类型:

import csv
import operator

def sort_csv(csv_filename, types, sort_key_columns):
    """sort (and rewrite) a csv file.
    types:  data types (conversion functions) for each column in the file
    sort_key_columns: column numbers of columns to sort by"""
    data = []
    with open(csv_filename, 'rb') as f:
        for row in csv.reader(f):
            data.append(convert(types, row))
    data.sort(key=operator.itemgetter(*sort_key_columns))
    with open(csv_filename, 'wb') as f:
        csv.writer(f).writerows(data)

编辑:

我做的很蠢。我在IDLE中玩各种事情convert,几天前写了一个函数。我忘了自己写的,而且很长一段时间都没有关闭IDLE,所以当我写上面的代码时,我以为convert是内置函数。可悲的是没有。

这是我的实现,尽管John Machin的更好一些:

def convert(types, values):
    return [t(v) for t, v in zip(types, values)]

用法:

import datetime
def date(s):
    return datetime.strptime(s, '%m/%d/%y')

>>> convert((int, date, str), ('1', '2/15/09', 'z'))
[1, datetime.datetime(2009, 2, 15, 0, 0), 'z']


 类似资料:
  • 我对python是全新的,我正在尝试在其中实现quicksort。有人能帮我完成我的代码吗? 我不知道如何连接这三个数组并打印它们。

  • 问题内容: 我正在尝试通过降序对数据框进行排序。我在升序参数中输入了“ False”,但我的命令仍然在升序。 我的代码是: 但输出是 问题答案: 编辑:这已经过时,请参阅@Merlin的答案。 是非空 列表 ,与。您应该写:

  • 问题内容: 我有一些文件需要按名称排序,但是不幸的是,我无法使用常规排序,因为我也想对字符串中的数字进行排序,因此我进行了一些研究,发现所寻找的东西叫做。 我尝试了此处给出的解决方案,并且效果很好。 但是,对于诸如和这样的字符串,该字符串会导致特定的自然键算法失败,因为它仅与第一个整数匹配,在这种情况下,该整数将是和,因此它放弃了排序。因此,我认为可能会帮助匹配字符串中的所有数字并将它们分组在一起

  • 嗨,我用冒泡排序查看了其他帖子,但解决方案在我的例子中不起作用:所以算法在我循环时重复了几次之后才起作用。但我如何在不使用输入的情况下做到这一点?这是我的代码,你知道我的意思:

  • 本文向大家介绍详解python中sort排序使用,包括了详解python中sort排序使用的使用技巧和注意事项,需要的朋友参考一下 1.前言 昨天一学妹问我一个关于python的问题,当时在外忙碌,没时间细看。今天看一下,咋一看我还真的不知道这个问题,bookinfo.sort(reverse=True ,key=lambda x:(x[1],x[1]/x[2]))是如何排序的。但是我猜测应该是按

  • 本文向大家介绍冒泡排序 (python版)相关面试题,主要包含被问及冒泡排序 (python版)时的应答技巧和注意事项,需要的朋友参考一下 参考回答: