Python3之字符串比較_重寫cmp函數(shù)方式
Python3字符串比較_重寫cmp函數(shù)
由于在C ++中習(xí)慣了使用CMP函數(shù),所以在遇到字符串排序時(shí),想當(dāng)然的去使用sort(開始,結(jié)束,CMP)去對(duì)列表進(jìn)行排序,但結(jié)果好像不行。
后來查閱網(wǎng)上資料,好像在python3中CMP函數(shù)已經(jīng)被取代了。
故而只能另求他法了。下面是很簡單的一個(gè)字符串日期提取及根據(jù)日期排序。
需求是這樣的,由于從文本中讀入的字符串是無序的,但在輸出時(shí)需要按時(shí)間前后輸出。
不多說,直接上代碼
#!/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)以上為自定義排序的一個(gè)小小實(shí)現(xiàn),對(duì)于自定義排序,本小白主要用于對(duì)自定義結(jié)構(gòu)體的數(shù)組,字典等的排序,以后會(huì)用于更多地方。
字符串比較 cmp op.eq
python3 不再使用cmp(str1,str2)來比較字符串
被operator模塊代替,需要導(dǎo)入模塊。
直接使用cmp,會(huì)出現(xiàn)錯(cuò)誤

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

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

