Python 代碼閱讀合集介紹:為什么不推薦Python初學(xué)者直接看項目源碼
本篇閱讀的代碼實現(xiàn)了將給定字符串轉(zhuǎn)換成URL友好形式的功能难审。即將字符串轉(zhuǎn)換成小寫,移除前后的空格祟峦,使用-
鏈接各個單詞掸屡,并移除所有特殊字符喻鳄。
本篇閱讀的代碼片段來自于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ù)接收一個字符串,并將其轉(zhuǎn)換成URL友好的形式初橘。函數(shù)將字符串轉(zhuǎn)換成小寫休吠,移除前后的空格扳埂,使用-
鏈接各個單詞,并移除所有特殊字符瘤礁。
函數(shù)首先使用str.lower()
和str.strip()
規(guī)范化輸入字符串阳懂,將其都變?yōu)樾懀⒁瞥_頭和結(jié)尾的空格符柜思。
然后使用使用三次re.sub()
將字符串中的空格岩调、破折號和下劃線替換為-
,并刪除特殊字符赡盘。
-
re..sub(r'[^\w\s-]', '', s)
會移除字符串中的非單詞字符和非空白字符号枕,保留-
。也就是說移除所有特殊符號陨享,除了-
葱淳,例如標(biāo)點等。注意抛姑,下劃線_
算作單詞字符赞厕。也就是說[^\w] = [^a-zA-Z0-9_]
《ㄏ酰空白字符則包括[ \t\n\r\f\v]
等皿桑。 -
re.sub(r'[\s_-]+', '-', s)
將所有空白字符、-
和_
的一個或多個組合替換成-
。 -
re.sub(r'^-+|-+$', '', s)
將所有開頭和結(jié)尾的一個或多個-
移除诲侮。