4

我需要在 python3 中使用 re2。安装工作正常,但是当我导入它时,我收到此错误:

>>> import re2 as re
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "re2.pyx", line 1, in init re2 (src/re2.cpp:13681)
NameError: basestring

有谁知道问题是什么?

4

1 回答 1

12

发布到 PyPI 的版本不兼容 Python 3;basestring仅存在于 Python 2 中。这不是唯一的问题,修复以文本为中心的项目以适应 Python 3 all-text-is-Unicode 视图并非易事。

似乎特定项目未维护;其他人已经报告了这个问题,人们指出了另一个分支:https ://github.com/andreasvc/pyre2 。

您可以直接从 GitHub 安装该项目:

pip install git+https://github.com/andreasvc/pyre2.git

请注意,您需要先安装 Cython 才能编译该项目;与其他 fork 不同,生成的 C++ 文件(来自re2.pyx文件)没有签入。只需运行pip install Cython.

你也可以看看替代品;也许该regex模块也符合您的要求。regexre附加功能的直接替代品,例如大大改进的 Unicode 支持。

于 2017-10-17T14:16:39.140 回答