Django: autoslug -> custom slugifier - PullRequest
       3

Django: autoslug -> custom slugifier

0 голосов
/ 01 августа 2010

У меня есть проб.Я пытаюсь создать пользовательскую функцию 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 Извините за плохой английский

1 Ответ

0 голосов
/ 01 августа 2010
import re
point = re.compile( r"(?<=\d)\.(?=\d)" )
point.sub( value, "point" )

для изменения . с, которое должно быть "point", а затем выполните str.replace для изменения других.

Объяснение

point соответствует a ., который расположен между двумя цифрами.

(?<=spam)ham(?=eggs) является (положительным) взглядом .Это означает «совпадение ham, если ему предшествует spam и затем eggs».Другими словами, он говорит механизму регулярных выражений «осмотреться» шаблону, которому он соответствует.

...