0

我有一个问题。我正在尝试创建一个自定义的 slugify 函数。我使用django.autoslug。由于 autoslug 文档,我能够创建一个自定义 slugifier,但它需要改进,我不知道如何实现这一点。

所以我有一个字符串(书名),即.NET Framework 4.0 with C# & VB in VisualStudio 2010. 我想对它进行 slugify 使其看起来像这样: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,但我不知道如何执行此操作以及如何用正确的“点/点替换”替换匹配的字符串

想法?!

PS对不起英语不好

4

1 回答 1

0
import re
point = re.compile( r"(?<=\d)\.(?=\d)" )
point.sub( value, "point" )

改变.应该是的 s ,"point"然后str.replace改变其他的。

解释

point匹配.夹在两个数字之间的 a。

(?<=spam)ham(?=eggs)是一个(积极的)环顾四周。它的意思是“匹配ham,只要它前面spam和后面是eggs”。换句话说,它告诉正则表达式引擎“环顾”它匹配的模式。

于 2010-08-01T15:13:02.367 回答