我有一个问题。我正在尝试创建一个自定义的slugify功能。我使用django.autoslug。由于autoslug文档,我能够创建一个自定义的slugifier,但它需要改进,我不知道如何实现。
所以我有一个字符串(书名),即.NET Framework 4.0 with C# & VB in VisualStudio 2010
。我想对它进行重击,使它看起来像这样:dotnet-framework-4point0-with-cshapr-and-vb-in-visualstudio-2010
我目前的功能如下:
def custom_slug(value, *args, **kwargs):
associations_dict = {'#':'sharp', '.':'dot', '&':'and'}
for searcg_char in associations_dict.keys():
if search_char in value:
value = value.replace(search_char, associations_dict[search_char])
return def_slugify(value)
如您所见,我的功能会将所有点.
替换为'dot'
。所以我的字符串将更改为dotnet-framework-4dot0-with-csharp-and-vb-in-visualstudio-2010
我建议,我应该使用RegEx,但我不知道如何做到这一点以及如何用右'dot / point-replacement'替换匹配的字符串
想法?!
P.S。对不起英文不好
答案 0 :(得分:0)
import re
point = re.compile( r"(?<=\d)\.(?=\d)" )
point.sub( value, "point" )
更改应为.
的{{1}},然后执行"point"
更改其他内容。
str.replace
匹配夹在两位数字之间的point
。
.
是(正面的)lookaround。这意味着“匹配(?<=spam)ham(?=eggs)
,只要它前面有ham
,后跟spam
”。换句话说,它告诉正则表达式引擎“环顾”它匹配的模式。