2015-07-12 96 views
-1

[問題:]我在排序包含字母和數字的列時遇到問題。如何對包含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 

因此,請你分享一下這個提示。

保重

回答

0

您可以使用重新找到數字和強制轉換爲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

相關問題