0

問題があります。カスタム 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を使用することをお勧めしますが、これを行う方法と、一致した文字列を正しい「ドット/ポイント置換」に置き換える方法がわかりません

アイデア?!

PS下手な英語でごめんなさい

4

1 に答える 1

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

.であるべき s を変更"point"してstr.replaceから、他のものを変更します。

説明

point.2 つの数字に挟まれた a に一致します。

(?<=spam)ham(?=eggs)(ポジティブな)ルックアラウンドです。これは、「hamが前後にある限り、一致する」ことを意味します。つまり、一致するパターンを「見回す」ように正規表現エンジンに指示します。spameggs

于 2010-08-01T15:13:02.367 に答える