将文本字符串转换为URL安全变量的最快方法是什么?

2 投票
4 回答
632 浏览
提问于 2025-04-15 21:11

我想把一段文字,比如说“用户名称”,转换成可以用在网址中的格式,比如“用户-名称”。有没有什么快速的方法可以把空格替换成“-”,同时确保字符只包含字母和数字?

4 个回答

0

我为了这个目的用过这个函数:

import unicodedata

def slugify(item):
    ret = item.lower().replace(u' ', u'_')

    return unicodedata.normalize('NFKD', ret).encode('ascii', 'ignore')

不过我不太确定这是不是最快的方法。

1

urllib.quote 这个工具不会把空格变成短横线,而是会把它们变成 %20。它的设计就是为了让字符串在网址中使用时更安全。

3

在处理这类问题时,使用string.translate通常是最快的解决办法(前提是你的字符串不是unicode格式)。

def translate(x):
    if x == ' ': return '-'
    if 'a' <= x <= 'z': return x
    if 'A' <= x <= 'Z': return x
    if '0' <= x <= '9': return x

def mk_translator():
    translations = ''.join(translate(chr(c)) or chr(c) for c in xrange(256))
    deletions = ''.join(chr(c) for c in xrange(256) if translate(chr(c)) is None)
    return translations, deletions

def urlize(x, translator=mk_translator()):
    return x.translate(*translator)

print urlize('User Name')

撰写回答