Python3之字符串比較_重寫cmp函數方式
Python3字符串比較_重寫cmp函數
由於在C ++中習慣瞭使用CMP函數,所以在遇到字符串排序時,想當然的去使用sort(開始,結束,CMP)去對列表進行排序,但結果好像不行。
後來查閱網上資料,好像在python3中CMP函數已經被取代瞭。
故而隻能另求他法瞭。下面是很簡單的一個字符串日期提取及根據日期排序。
需求是這樣的,由於從文本中讀入的字符串是無序的,但在輸出時需要按時間前後輸出。
不多說,直接上代碼
#!/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)
以上為自定義排序的一個小小實現,對於自定義排序,本小白主要用於對自定義結構體的數組,字典等的排序,以後會用於更多地方。
字符串比較 cmp op.eq
python3 不再使用cmp(str1,str2)來比較字符串
被operator模塊代替,需要導入模塊。
直接使用cmp,會出現錯誤
如何查看自己的python版本,我的是windows
命令:(註意V一定要大寫)
python -V
python3 比較字符串如下
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- Python列表排序 list.sort方法和內置函數sorted用法
- Python 中 sorted 如何自定義比較邏輯
- Python中的list.sort()方法和函數sorted(list)
- 22個Python的萬用公式分享
- python教程對函數中的參數進行排序