如何在 Python 3 中使用 slugify



我正在尝试使用slugify,我使用pip3 install slugify安装了它。但是,在解释器中,如果我尝试将字符串'hello',我会看到以下内容:

Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
Type "copyright", "credits" or "license" for more information.
IPython 5.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.
In [1]: from slugify import slugify
In [2]: slugify('hello')
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-2-a58110f37579> in <module>()
----> 1 slugify('hello')
/usr/local/lib/python3.5/dist-packages/slugify.py in slugify(string)
     22 
     23     return re.sub(r'[-s]+', '-',
---> 24             unicode(
     25                 re.sub(r'[^ws-]', '',
     26                     unicodedata.normalize('NFKD', string)
NameError: name 'unicode' is not defined
In [3]: slugify(u'hello')
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-3-acc9f7b8d41e> in <module>()
----> 1 slugify(u'hello')
/usr/local/lib/python3.5/dist-packages/slugify.py in slugify(string)
     22 
     23     return re.sub(r'[-s]+', '-',
---> 24             unicode(
     25                 re.sub(r'[^ws-]', '',
     26                     unicodedata.normalize('NFKD', string)
NameError: name 'unicode' is not defined

相比之下,在Python 2中,后者确实有效:

Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
Type "copyright", "credits" or "license" for more information.
IPython 2.4.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.
In [1]: from slugify import slugify
In [2]: slugify(u'hello')
Out[2]: u'hello'

我怎样才能让它在 Python 3 中工作?

你安装的slugify包不是为python 3构建的,它目前只支持python 2。而且它不太可能得到更新。最简单的判断方法是,在整个源代码中,它使用了python 2关键字unicode,而python 3中不存在它。

你可能做到了:

pip install slugify

这是一个过时的软件包,而不是您链接的软件包。

要安装您链接的slugify软件包,https://pypi.python.org/pypi/python-slugify,当您安装它时,它被称为python-slugify,它支持所有最新的python版本。并具有更多功能。

pip install python-slugify

并以与其他包相同的方式导入:

from slugify import slugify

注意:您必须删除已安装的原始软件包,因为它们使用相同的名称。

安装 python-slugify

pip install python-slugify

最新更新