您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python3字符串比較和重寫cmp函數(shù)的方法”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Python3字符串比較和重寫cmp函數(shù)的方法”文章能幫助大家解決問題。
由于在C ++中習慣了使用CMP函數(shù),所以在遇到字符串排序時,想當然的去使用sort(開始,結(jié)束,CMP)去對列表進行排序,但結(jié)果好像不行。
后來查閱網(wǎng)上資料,好像在python3中CMP函數(shù)已經(jīng)被取代了。
故而只能另求他法了。下面是很簡單的一個字符串日期提取及根據(jù)日期排序。
需求是這樣的,由于從文本中讀入的字符串是無序的,但在輸出時需要按時間前后輸出。
#!/usr/bin/python #_*_coding:utf-8_*_ import functools import re def cmp(str1,str2): day1 = (re.search(r'\d{4}_\d{2}_\d{2}', str1)).group() day2 = (re.search(r'\d{4}_\d{2}_\d{2}', str2)).group() start1 = (re.search(r'Start\d', str1)).group() start2 = (re.search(r'Start\d', str2)).group() if day1 > day2: return 1 elif day1 < day2: return -1 elif start1 > start2: return 1 elif start1 < start2: return -1 else: return 0 if __name__ == '__main__': strList = [r"STRLIST2018_07_30\Start0", r"STRLIST2018_05_01\Start0", r"STRLIST2018_06_30\Start1", r"STRLIST2018_05_01\Start1", r"STRLIST2018_05_30\Start0", r"STRLIST2018_06_01\Start0", r"STRLIST2018_06_30\Start0", r"STRLIST2018_05_30\Start1", r"STRLIST2018_07_30\Start1", r"STRLIST2018_06_01\Start1" ] print("Is not sorted--------------") for i in strList: print(i) strList = sorted(strList,key = functools.cmp_to_key(cmp)) print("Has sorted-----------------") for i in strList: print(i)
以上為自定義排序的一個小小實現(xiàn),對于自定義排序,本小白主要用于對自定義結(jié)構(gòu)體的數(shù)組,字典等的排序,以后會用于更多地方。
python3 不再使用cmp(str1,str2)來比較字符串
被operator模塊代替,需要導入模塊。
如何查看自己的python版本,我的是windows
命令:(注意V一定要大寫)
python -V
關于“Python3字符串比較和重寫cmp函數(shù)的方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。