有人可以发布一个python片段来创建一个基于标题的链接,比如stackoverflow(或wordpress)...
e.g。
title : Global across "Modules" ?
corresponding link : http://example.com/8277516/globals-across-modules
我不需要除字母或数字或' - '之外的任何字符。此外,我不需要输出字符串的开头或结尾字符为' - '
答案 0 :(得分:2)
这个怎么样:
>>> import re
>>> s = 'Global across "Modules" ?'
>>> '-'.join(item.lower() for item in re.findall(r'\w+', s))
'global-across-modules'
这适用于Python 2;它只保留ASCII字母数字字符。在Python 3下,它还将保留Unicode字母数字,这可能不是你想要的。
答案 1 :(得分:1)
你可能不想重新发明轮子,所以,你可能想要使用Django的slugify过滤器。当然,您不需要使用Django来使用它,您可以尝试查看源代码并获得您想要的内容,这样您就不必安装整个Django软件包来完成这项工作
以下是您将获得的信息:
>>> from django.template.defaultfilters import slugify
>>> slugify("""Global across "Modules" ?""")
u'global-across-modules'
>>>
请注意,slugs旨在用于Django中的URL,因此它们是URL安全的。
答案 2 :(得分:0)
我建议使用输入和输出以及后备字典。
>>> s = "Tür auf"
>>> repl = {'ü' : 'u', ' ': '-'}
>>> f = lambda i: repl.get(i, '-')
>>> "".join(map(f, s)).lower()
'tur-auf'
修改强>
错误;)因为T和r不在替换词典中。但我希望你明白这个主意。您可以获得包含所有字母的列表:
>>> [chr(i) for i in range(97, 123)]
现在你需要一个函数来检查字母或它的小写是否在列表中,如果是,则使用它,如果没有,用dict值替换它。