設計乙個演算法,將url轉換成5部分,分別是:schema、netloc、path、query_params、fragment。
問題url的中文名叫統一資源定位符,就是咱們常說的**,設計乙個演算法,將url轉換成5部分,分別是:schema、netl程式設計客棧oc、path、query_params、fragment。
:///?#
一圖勝千言:
應用場景
在實際應用場景中,有些聚合**會把url裡面netloc提取出來。
分析這裡沒有什麼特別複雜的演算法,因為每部分都有乙個特別的字元,所以,如果你熟練python的字串操作和正規表示式使用的話那麼就很簡單。
知識點字串的常用方法split、find、join、lower、切片的使用,re模組下面的常用方法。另外還有關於如何使用 namedtuple 定義乙個簡單類的操作
實現第一種方式使用字串提供的方法,就是根據關鍵字元進行切分。整體思路是利用字串的切片功能不斷進行切分,**稍顯複雜。
# 初始化每部分為空
schema = netloc = params = fragment = path = none
# 從 :// 切分 url,前面部分是shema
i = url.find('://')
if i > 0:
schema = url[:i]
url = url[i + 3:]
# 獲取netloc
for c in "/?#": # 三個分隔符的順利很重要
a = url.
if a > 0: # 只要有三個字元中的任意字元,立即切分,前部分就是netloc,剩下的部分進行後續處理
netloc, url = url[0:a], url[a:]
break
else:
netloc, url = url, '' # 如果三個分隔符都不在url中,那麼這是乙個只包含
# 同樣的方式獲取path
for c in "?#":
a = url.find(c)
if a > 0:
path, url = url[0:a], url[a:]
break
else:
path, url = url or none, ''
if "#" in url:
url, fragment = url.split("#", 1)
if '?' in url:
url, params = url.split('?', 1)
return url(schema=schema, netloc=netloc, path=path, params=_params_parse(params), fragment=fragment)
def _params_parse(params程式設計客棧):
if not params:
return none
pairs = [s for s in params.split('&')]
param_dict = dict()
for pair in pairs:
k, v = pair.split('=', 1)
param_dict[k] = v
return param_dict
第二種方式就是用正規表示式,主要考驗你寫正則的能力
python實現中文轉換url編碼的方法2
中專學校排名 茂名論壇 這篇文章主要介紹了python實現中文轉換url編碼的方法,結合例項形式分析了python針對中文的gbk與utf 8編碼轉換的相關技巧,具有一定參考借鑑價值,需要的朋友可以參考下 import urllib data 麗江 print data 麗江 data xe4 xb...
數制轉換,python實現
在學數電的時候用到的 數碼用於表示數量的大小,其規則為 數制 數碼用於表示不同事物或事物的不同狀態,其規則為碼制 數字 r進製 的按權展開式即為 d i 1n ki r iki 0,1 r d sum n k i r i quad quad k i in 0,1 r d i 1 n ki ri ki...
Python 實現進製轉換
沒事刷力扣,記錄有趣題目 題目 請實現乙個函式,輸入乙個整數,輸出該數二進位制表示中 1 的個數。例如,把 9 表示成二進位制是 1001,有 2 位是 1。因此,如果輸入 9,則該函式輸出 2。class solution object defhammingweight self,n type n...