Python如何實現轉換URL詳解

2022-10-04 17:03:19 字數 2329 閱讀 4454

設計乙個演算法,將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...