python灵活的slugify函数
awesome-slugif的Python项目详细描述
1,Python可伸缩函数
安装
pip install awesome-slugify
用法
fromslugifyimportslugifyslugify('Any text')# 'Any-text'
自定义slugify
fromslugifyimportslugify,Slugify,UniqueSlugifyslugify('Any text',to_lower=True)# 'any-text'custom_slugify=Slugify(to_lower=True)custom_slugify('Any text')# 'any-text'custom_slugify.separator='_'custom_slugify('Any text')# 'any_text'custom_slugify=UniqueSlugify()custom_slugify('Any text')# 'any-text'custom_slugify('Any text')# 'any-text-1'
slugify函数可选参数
to_lower# if True convert text to lowercasemax_length# output string max lengthseparator# separator stringcapitalize# if True upper first letter
slugify类args
pretranslate=None# function or dict for replace before translationtranslate=unidecode.unidecode# function for slugifying or Nonesafe_chars=''# additional safe charsstop_words=()# remove these words from slugto_lower=False# default to_lower valuemax_length=None# default max_length valueseparator='-'# default separator valuecapitalize=False# default capitalize value
唯一类args
# all Slugify class args +uids=[]# initial unique ids
预定义的slugify函数
有些slugify函数是这样预定义的:
fromslugifyimportSlugify,CYRILLIC,GERMAN,GREEKslugify=Slugify()slugify_unicode=Slugify(translate=None)slugify_url=Slugify()slugify_url.to_lower=Trueslugify_url.stop_words=('a','an','the')slugify_url.max_length=200slugify_filename=Slugify()slugify_filename.separator='_'slugify_filename.safe_chars='-.'slugify_filename.max_length=255slugify_ru=Slugify(pretranslate=CYRILLIC)slugify_de=Slugify(pretranslate=GERMAN)slugify_el=Slugify(pretranslate=GREEK)
示例
fromslugifyimportSlugify,UniqueSlugify,slugify,slugify_unicodefromslugifyimportslugify_url,slugify_filenamefromslugifyimportslugify_ru,slugify_deslugify('one kožušček')# one-kozuscekslugify('one two three',separator='.')# one.two.threeslugify('one two three four',max_length=12)# one-two-four (12 chars)slugify('one TWO',to_lower=True)# one-twoslugify('one TWO',capitalize=True)# One-TWOslugify_filename(u'Дrаft №2.txt')# Draft_2.txtslugify_url(u'Дrаft №2.txt')# draft-2-txtmy_slugify=Slugify()my_slugify.separator='.'my_slugify.pretranslate={'я':'i','♥':'love'}my_slugify('Я ♥ борщ')# I.love.borshch (custom translate)slugify('Я ♥ борщ')# Ia-borshch (standard translation)slugify_ru('Я ♥ борщ')# Ya-borsch (alternative russian translation)slugify_unicode('Я ♥ борщ')# Я-борщ (sanitize only)slugify_de('ÜBER Über slugify')# UEBER-Ueber-slugifyslugify_unique=UniqueSlugify(separator='_')slugify_unique('one TWO')# One_TWOslugify_unique('one TWO')# One_TWO_1slugify_unique=UniqueSlugify(uids=['cellar-door'])slugify_unique('cellar door')# cellar-door-1
自定义唯一的slugify检查器
fromslugifyimportUniqueSlugifydefmy_unique_check(text,uids):iftextinuids:returnFalsereturnnotSomeDBClass.objects.filter(slug_field=text).exists()custom_slugify_unique=UniqueSlugify(unique_check=my_unique_check)# Checks the database for a matching documentcustom_slugify_unique('te occidere possunt')
运行单元测试
$ virtualenv venv $ venv/bin/pip install -r requirements.txt $ venv/bin/nosetests slugify