Python 代碼閱讀合集介紹:為什么不推薦Python初學者直接看項目源碼
本篇閱讀的代碼實現了將給定字符串轉換成URL友好形式的功能。即將字符串轉換成小寫,移除前后的空格,使用-
鏈接各個單詞,并移除所有特殊字符。
本篇閱讀的代碼片段來自于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
函數接收一個字符串,并將其轉換成URL友好的形式。函數將字符串轉換成小寫,移除前后的空格,使用-
鏈接各個單詞,并移除所有特殊字符。
函數首先使用str.lower()
和str.strip()
規范化輸入字符串,將其都變為小寫,并移除開頭和結尾的空格符。
然后使用使用三次re.sub()
將字符串中的空格、破折號和下劃線替換為-
,并刪除特殊字符。
-
re..sub(r'[^\w\s-]', '', s)
會移除字符串中的非單詞字符和非空白字符,保留-
。也就是說移除所有特殊符號,除了-
,例如標點等。注意,下劃線_
算作單詞字符。也就是說[^\w] = [^a-zA-Z0-9_]
。空白字符則包括[ \t\n\r\f\v]
等。 -
re.sub(r'[\s_-]+', '-', s)
將所有空白字符、-
和_
的一個或多個組合替換成-
。 -
re.sub(r'^-+|-+$', '', s)
將所有開頭和結尾的一個或多個-
移除。