如何对包含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()))
OP使用'operator.itemgetter(154)'作为关键,因此需要进行小的调整:'lambda x:int(re.search(“\ d +”,x [154])。g roup())' – Sam
@Sam,true,编辑 –
嗨,大家好,感谢您的快速回复。我试过你的方法,我得到了: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