亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

運行用戶代理解析時的不同結果

運行用戶代理解析時的不同結果

慕容3067478 2021-12-16 15:59:01
我正在使用 httpagentparser 庫來剖析用戶代理。但是,在相同的輸入上運行相同的命令時,無論出于何種原因,我都會得到不同排序的結果。user_agent_e="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"python3.5 -c "import httpagentparser; s='$user_agent_e'; print (httpagentparser.detect(s))"{'browser': {'name': 'Chrome', 'version': '73.0.3683.86'}, 'bot': False, 'platform': {'name': 'Windows', 'version': '10'}, 'os': {'name': 'Windows', 'version': '10'}}python3.5 -c "import httpagentparser; s='$user_agent_e'; print (httpagentparser.detect(s))"{'bot': False, 'os': {'version': '10', 'name': 'Windows'}, 'browser': {'version': '73.0.3683.86', 'name': 'Chrome'}, 'platform': {'version': '10', 'name': 'Windows'}}python3.5 -c "import httpagentparser; s='$user_agent_e'; print (httpagentparser.detect(s))"{'platform': {'version': '10', 'name': 'Windows'}, 'bot': False, 'browser': {'version': '73.0.3683.86', 'name': 'Chrome'}, 'os': {'version': '10', 'name': 'Windows'}}python3.5 -c "import httpagentparser; s='$user_agent_e'; print (httpagentparser.detect(s))"{'browser': {'name': 'Chrome', 'version': '73.0.3683.86'}, 'bot': False, 'os': {'name': 'Windows', 'version': '10'}, 'platform': {'name': 'Windows', 'version': '10'}}python3.5 -c "import httpagentparser; s='$user_agent_e'; print (httpagentparser.detect(s))"{'bot': False, 'os': {'version': '10', 'name': 'Windows'}, 'browser': {'version': '73.0.3683.86', 'name': 'Chrome'}, 'platform': {'version': '10', 'name': 'Windows'}}python3.5 -c "import httpagentparser; s='$user_agent_e'; print (httpagentparser.detect(s))"{'platform': {'version': '10', 'name': 'Windows'}, 'os': {'version': '10', 'name': 'Windows'}, 'bot': False, 'browser': {'version': '73.0.3683.86', 'name': 'Chrome'}}如何僅使用這種單線獲得可預測的結果?
查看完整描述

3 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

原因是字典沒有明確定義的順序。您可以使用OrderedDict(它有一個順序),在你得到的排序字典上:


python3 -c "from collections import OrderedDict; import httpagentparser; s='$user_agent_e'; print (OrderedDict(sorted(httpagentparser.detect(s).items())))"

或解開:


from collections import OrderedDict

import httpagentparser; s='$user_agent_e'

print(OrderedDict(sorted(httpagentparser.detect(s).items())))


查看完整回答
反對 回復 2021-12-16
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

在 Python3 版本低于 3.6 中不排序字典。

如果您希望所有詞典都保留插入順序,則可以使用 CPython 3.6 或更高版本。否則,您可以將 httpagentparser 的輸出轉換為列表:

python3.5 -c "import httpagentparser; s='$user_agent_e'; print (list(map(list, httpagentparser.detect(s).items())))"

這不需要任何額外的導入。


查看完整回答
反對 回復 2021-12-16
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

這些都是一樣的。


>>> a={'bot': False, 'os': {'version': '10', 'name': 'Windows'}, 'browser': {'version': '73.0.3683.86', 'name': 'Chrome'}, 'platform': {'version': '10', 'name': 'Windows'}}

>>> b={'platform': {'version': '10', 'name': 'Windows'}, 'bot': False, 'browser': {'version': '73.0.3683.86', 'name': 'Chrome'}, 'os': {'version': '10', 'name': 'Windows'}}

>>> c={'browser': {'name': 'Chrome', 'version': '73.0.3683.86'}, 'bot': False, 'os': {'name': 'Windows', 'version': '10'}, 'platform': {'name': 'Windows', 'version': '10'}}

>>> d={'bot': False, 'os': {'version': '10', 'name': 'Windows'}, 'browser': {'version': '73.0.3683.86', 'name': 'Chrome'}, 'platform': {'version': '10', 'name': 'Windows'}}

>>> e={'platform': {'version': '10', 'name': 'Windows'}, 'os': {'version': '10', 'name': 'Windows'}, 'bot': False, 'browser': {'version': '73.0.3683.86', 'name': 'Chrome'}}

>>> a==b==c==d==e

True

這些是字典。字典沒有排序,所以鍵值對的打印順序是隨機的。盡管如此,它們還是一樣的。


查看完整回答
反對 回復 2021-12-16
  • 3 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號