将文本字符串转换为URL安全变量的最快方法是什么?
我想把一段文字,比如说“用户名称”,转换成可以用在网址中的格式,比如“用户-名称”。有没有什么快速的方法可以把空格替换成“-”,同时确保字符只包含字母和数字?
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')