Python实现CSV文件打开读取并按首列数值排序及代码修复方法
代码问题分析
list.sort()是原地排序方法,返回值为None,你直接返回该方法的执行结果,无法得到排序后的列表- 直接对读取到的行字符串排序默认使用字符串字典序,当行首序号超过1位数时会出现排序错误(比如
10,xxx会排在2,xxx前面),需要显式提取每行第一个字段转为整数作为排序依据 - 未使用上下文管理器管理文件打开操作,存在文件句柄泄漏的风险
- 函数命名与你预期的
sortCSV不符,也未做CSV格式的基本容错处理
修改后的实现代码
import csv def sortCSV(csvFilename: str): # 用with上下文管理器自动关闭文件 with open(csvFilename, 'r', encoding='utf-8') as f: lines = f.readlines() # 按每行第一个逗号前的数值升序排序 sorted_lines = sorted(lines, key=lambda x: int(x.split(',')[0])) # 若需要返回拼接好的完整字符串可改为 return ''.join(sorted_lines) return sorted_lines # 打印测试逻辑 if __name__ == '__main__': result = sortCSV('你的csv文件路径.csv') for line in result: print(line.strip())
补充说明
如果你的CSV存在表头、空行等特殊情况,可在读取后先做数据过滤再执行排序操作;如果需要输出排序后的新CSV文件,新增文件写入逻辑,将排序后的行逐行写入新文件即可。
内容的提问来源于stack exchange,提问作者jordan parker
相关产品推荐
相关产品推荐

