如何对包含python中的字母和数字的csv列进行排序?

问题描述:

[问题:]我在排序包含字母和数字的列时遇到问题。如何对包含python中的字母和数字的csv列进行排序?

【输入】 我列如下: 参考

Test1 
Test2 
Test11 

[代码]

import csv 
import operator 
sample = open (r'test.csv','r') 
csv1 = csv.reader(sample, delimiter = ',') 
sort = sorted (csv1,key=operator.itemgetter(154)) 

[电流输出]

Test1 
Test11 
Test2 

[所需的输出]

Test1 
Test2 
Test11 

因此,请你分享一下这个提示。

保重

您可以使用重新找到数字和强制转换为int:

import re 

sort = sorted(csv1,key=lambda x: int(re.search("\d+",x[154]).group())) 

如果你有没有数字某些字符串:

进口重新

sort = sorted(csv1,key=lambda x: x[154] if x.isalpha() else int(re.search("\d+",x[154]).group())) 
+0

OP使用'operator.itemgetter(154)'作为关键,因此需要进行小的调整:'lambda x:int(re.search(“\ d +”,x [154])。g roup())' – Sam

+0

@Sam,true,编辑 –

+0

嗨,大家好,感谢您的快速回复。我试过你的方法,我得到了:AttributeError:'NoneType'对象没有属性'组'。当前代码是:import csv import operator sample = open(r'test.csv','r') csv1 = csv.reader(sample,delimiter =',') sort = sorted(csv1,key = lambda x:int(re.search(“\ d +”,x [154])。group())) – serte