代码之家  ›  专栏  ›  技术社区  ›  V-Light

Django:autoslug->自定义段塞炉

  •  0
  • V-Light  · 技术社区  · 15 年前

    我有个问题。我正在创建一个自定义的sligify函数。我用 django.autoslug . 由于autoslug文档,我可以创建一个自定义的鼻涕炉,但它需要改进,我不知道如何认识到这一点。

    所以我有一个字符串(书名),也就是说。 .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,但我不知道如何做,以及如何用正确的“点/点替换”替换匹配的字符串。

    思想?!

    对不起,英语不好

    1 回复  |  直到 15 年前
        1
  •  0
  •   Katriel    15 年前
    import re
    point = re.compile( r"(?<=\d)\.(?=\d)" )
    point.sub( value, "point" )
    

    改变 . 那应该是 "point" 然后做 str.replace 改变其他人。

    解释

    point 匹配A . 夹在两位数之间。

    (?<=spam)ham(?=eggs) 是(正) lookaround . 它意味着“匹配” ham ,前提是前面有 spam 紧随其后 eggs “。换句话说,它告诉regex引擎“环顾”它匹配的模式。

    推荐文章