
Python 代碼閱讀合集介紹:為什么不推薦Python初學(xué)者直接看項(xiàng)目源碼
本篇閱讀的代碼實(shí)現(xiàn)了將給定字符串轉(zhuǎn)換成URL友好形式的功能。即將字符串轉(zhuǎn)換成小寫,移除前后的空格,使用-鏈接各個(gè)單詞,并移除所有特殊字符。
本篇閱讀的代碼片段來自于30-seconds-of-python。
slugify
import re
def slugify(s):
s = s.lower().strip()
s = re.sub(r'[^\w\s-]', '', s)
s = re.sub(r'[\s_-]+', '-', s)
s = re.sub(r'^-+|-+$', '', s)
return s
# EXAMPLES
print(slugify('Hello World!')) # 'hello-world'
slugify函數(shù)接收一個(gè)字符串,并將其轉(zhuǎn)換成URL友好的形式。函數(shù)將字符串轉(zhuǎn)換成小寫,移除前后的空格,使用-鏈接各個(gè)單詞,并移除所有特殊字符。
函數(shù)首先使用str.lower()和str.strip()規(guī)范化輸入字符串,將其都變?yōu)樾懀⒁瞥_頭和結(jié)尾的空格符。
然后使用使用三次re.sub()將字符串中的空格、破折號(hào)和下劃線替換為-,并刪除特殊字符。
-
re..sub(r'[^\w\s-]', '', s)會(huì)移除字符串中的非單詞字符和非空白字符,保留-。也就是說移除所有特殊符號(hào),除了-,例如標(biāo)點(diǎn)等。注意,下劃線_算作單詞字符。也就是說[^\w] = [^a-zA-Z0-9_]。空白字符則包括[ \t\n\r\f\v]等。 -
re.sub(r'[\s_-]+', '-', s)將所有空白字符、-和_的一個(gè)或多個(gè)組合替換成-。 -
re.sub(r'^-+|-+$', '', s)將所有開頭和結(jié)尾的一個(gè)或多個(gè)-移除。