Python3之字符串比較_重寫cmp函數(shù)方式
Python3字符串比較_重寫cmp函數(shù)
由于在C ++中習慣了使用CMP函數(shù),所以在遇到字符串排序時,想當然的去使用sort(開始,結束,CMP)去對列表進行排序,但結果好像不行。
后來查閱網(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),對于自定義排序,本小白主要用于對自定義結構體的數(shù)組,字典等的排序,以后會用于更多地方。
字符串比較 cmp op.eq
python3 不再使用cmp(str1,str2)來比較字符串
被operator模塊代替,需要導入模塊。
直接使用cmp,會出現(xiàn)錯誤

如何查看自己的python版本,我的是windows
命令:(注意V一定要大寫)
python -V
python3 比較字符串如下

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
基于Python 中函數(shù)的 收集參數(shù) 機制
今天小編就為大家分享一篇基于Python 中函數(shù)的 收集參數(shù) 機制,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Pycharm終端顯示PS而不顯示虛擬環(huán)境名的解決
這篇文章主要介紹了Pycharm終端顯示PS而不顯示虛擬環(huán)境名的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
使用python的pandas庫讀取csv文件保存至mysql數(shù)據(jù)庫
這篇文章主要介紹了利用python的pandas庫讀取csv文件保存至mysql數(shù)據(jù)庫的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-08-08
Python調(diào)用工具包實現(xiàn)發(fā)送郵件服務
這篇文章主要為大家詳細介紹了Python圖畫調(diào)用工具包實現(xiàn)發(fā)送郵件服務的功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2023-05-05

