Python代碼閱讀(第90篇):將字符串轉換成URL友好形式

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()將字符串中的空格、破折號和下劃線替換為-,并刪除特殊字符。

  1. re..sub(r'[^\w\s-]', '', s)會移除字符串中的非單詞字符和非空白字符,保留-。也就是說移除所有特殊符號,除了-,例如標點等。注意,下劃線_算作單詞字符。也就是說[^\w] = [^a-zA-Z0-9_]。空白字符則包括[ \t\n\r\f\v]等。
  2. re.sub(r'[\s_-]+', '-', s)將所有空白字符、-_的一個或多個組合替換成-
  3. re.sub(r'^-+|-+$', '', s)將所有開頭和結尾的一個或多個-移除。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容