Python-Slugify:创建对搜索引擎友好的 Unicode 网址别名

June 10, 2025

Python-Slugify: 您的首选工具,旨在生成简洁、对搜索引擎友好的“短语网址”

在网络开发和数据管理领域,将人类可读的文本转换为对 URL 友好的字符串(即“短语网址”或“slug”)是一项常见的需求。无论是博客文章的 URL、图片文件名,还是数据库中的唯一标识符,短语网址在提高可用性和搜索引擎优化(SEO)方面都扮演着关键角色。

python-slugify 应运而生,它是一个功能强大且高度可配置的 Python 库,旨在以出色的优雅方式处理这项任务,尤其是在处理复杂的 Unicode 字符时。

什么是短语网址(Slug)?

短语网址是 URL 的一部分,它以人类可读的关键词格式识别特定页面。例如,在 yourwebsite.com/blog/my-awesome-post-title 中,my-awesome-post-title 就是短语网址。

为什么选择 python-slugify?

该库在处理 Unicode 字符串方面表现出色,这是更简单的短语网址生成工具常常忽视的一个特性。它能智能地将各种语言的字符转换为对应的 ASCII 字符,确保您的短语网址具有普遍兼容性和实际意义。

主要特点:

  • Unicode 支持: 无缝转换国际字符(例如,'C\'est déjà l\'été.' 变为 'c-est-deja-l-ete';'影師嗎' 变为 'ying-shi-ma')。
  • 可定制选项: 提供多种参数来控制输出,包括:
    • entitiesdecimalhexadecimal:处理 HTML 实体。
    • max_lengthword_boundarysave_order:控制短语网址长度和单词完整性。
    • separator:定义用于分隔单词的字符(默认为连字符 -)。
    • stopwords:移除常用的词,例如“the”、“in”、“a”,以保持短语网址简洁。
    • regex_pattern:应用自定义正则表达式进行高级字符过滤。
    • lowercase:可选择保留原始大小写。
    • replacements:定义自定义字符或字符串替换(例如 [['|', 'or']])。
    • allow_unicode:如果需要,保留原始 Unicode 字符。
  • 易于安装: 可通过 pip 安装,轻松集成到您的 Python 项目中。

    pip install python-slugify
    # 或者,使用替代的 unidecode 包:
    pip install python-slugify[unidecode]
    
  • 命令行工具: 附带一个便捷的 slugify 命令行工具,可直接在终端中进行快速转换。

    echo "Taking input from STDIN" | slugify --stdin
    # 输出:taking-input-from-stdin
    
    slugify taking input from the command line
    # 输出:taking-input-from-the-command-line
    

如何使用:

使用 python-slugify 非常直观。只需导入 slugify 函数并传入您的文本即可:

from slugify import slugify

# 基本用法
txt = "This is a test ---"
r = slugify(txt)
print(r) # 输出:this-is-a-test

# 处理非英文字符
txt = 'Компьютер'
r = slugify(txt)
print(r) # 输出:kompiuter

# 结合 max_length 和 word_boundary
txt = 'jaja---lol-méméméoo--a'
r = slugify(txt, max_length=15, word_boundary=True)
print(r) # 输出:jaja-lol-a

# 移除停用词
txt = 'the quick brown fox jumps over the lazy dog'
r = slugify(txt, stopwords=['the'])
print(r) # 输出:quick-brown-fox-jumps-over-lazy-dog

# 自定义替换
txt = '10 | 20 %'
r = slugify(txt, replacements=[['|', 'or'], ['%', 'percent']])
print(r) # 输出:10-or-20-percent

许可证和依赖

python-slugify 采用 MIT 许可证发布,可供商业和个人免费使用。默认情况下,它使用 text-unidecode 进行解码,该库受 GPL 和 Perl Artistic 许可证保护。对于有偏好的用户,也可以安装替代的 Unidecode(GPL)包。

贡献

本项目欢迎贡献。开发者在提交拉取请求前,请务必阅读贡献指南

python-slugify 在 GitHub 上拥有超过 1.5k 颗星和 110 个分支,是一个维护良好且广泛使用的工具,它简化了网络内容管理中的一个关键环节。其灵活性和全面的功能集使其成为任何 Python 开发者工具箱中宝贵的补充。

原创文章: 查看原文

分享本文