第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

請(qǐng)問(wèn)如何比較Python中的版本號(hào)?

請(qǐng)問(wèn)如何比較Python中的版本號(hào)?

森林海 2019-08-02 15:02:17
如何比較Python中的版本號(hào)?我正在瀏覽一個(gè)包含雞蛋的目錄,以便將這些雞蛋添加到sys.path..如果目錄中有兩個(gè)版本相同的.EGG,我只想添加最新的版本。我有一個(gè)正則表達(dá)式r"^(?P<eggName>\w+)-(?P<eggVersion>[\d\.]+)-.+\.egg$若要從文件名中提取名稱和版本,請(qǐng)執(zhí)行以下操作。問(wèn)題是比較版本號(hào),它是一個(gè)字符串,類似2.3.1.因?yàn)槲以诒容^字符串,在10上面有2種類型,但是對(duì)于版本來(lái)說(shuō)這是不正確的。>>> "2.3.1" > "10.1.1"True我可以做一些拆分、解析、轉(zhuǎn)換為int等等,最終我會(huì)找到一個(gè)解決辦法。但這是Python不是Java..有沒(méi)有一種比較版本字符串的優(yōu)雅方法?
查看完整描述

3 回答

?
達(dá)令說(shuō)

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊

setuptools定義parse_version()..這個(gè)工具Pep 0440-版本識(shí)別并且還能夠解析不遵循PEP的版本。此函數(shù)由easy_installpip若要處理版本比較,請(qǐng)執(zhí)行以下操作。從博士:

解析了PEP 440定義的項(xiàng)目版本字符串。返回的值將是一個(gè)表示版本的對(duì)象。這些對(duì)象可以相互比較和排序。排序算法是由PEP 440定義的,另外,任何不是有效PEP 440版本的版本都將被認(rèn)為小于任何有效的PEP 440版本,無(wú)效版本將繼續(xù)使用原始算法進(jìn)行排序。

引用的“原始算法”是在PEP 440存在之前在舊版本的docs中定義的。

在語(yǔ)義上,這種格式是distutils‘StrictVersionLooseVersion類;如果您提供的版本將與StrictVersion然后他們會(huì)用同樣的方式進(jìn)行比較。否則,比較更像是一種“更聰明”的LooseVersion..可以創(chuàng)建病態(tài)版本編碼方案來(lái)欺騙這個(gè)解析器,但是在實(shí)踐中它們應(yīng)該是非常罕見(jiàn)的。

這個(gè)文獻(xiàn)資料提供一些示例:

如果您想確定所選的編號(hào)方案按照您認(rèn)為的方式工作,則可以使用pkg_resources.parse_version()函數(shù)來(lái)比較不同的版本號(hào):

>>> from pkg_resources import parse_version>>> parse_version('1.9.a.dev') == parse_version('1.9a0dev')True>>> parse_version('2.1-rc2') < parse_version('2.1')True>>> parse_version('0.6a9dev-r41475') < parse_version('0.6a9')True

如果不使用setuptools,則包裝項(xiàng)目將此功能和其他與打包相關(guān)的功能拆分到一個(gè)單獨(dú)的庫(kù)中。

from packaging import version
version.parse('1.0.3.dev')from pkg_resources import parse_version
parse_version('1.0.3.dev')




查看完整回答
反對(duì) 回復(fù) 2019-08-03
?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊

將版本字符串轉(zhuǎn)換為元組并從那里開(kāi)始有什么問(wèn)題?對(duì)我來(lái)說(shuō)很優(yōu)雅

>>> (2,3,1) < (10,1,1)True>>> (2,3,1) < (10,1,1,1)True>>> (2,3,1,10) < (10,1,1,1)True>>> (10,3,1,10) < (10,1,1,1)False>>> (10,3,1,10) < (10,4,1,1)True

@Kindall的解決方案是代碼看起來(lái)有多好的一個(gè)快速例子。


查看完整回答
反對(duì) 回復(fù) 2019-08-03
  • 3 回答
  • 0 關(guān)注
  • 642 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)