cypunct是一个cython包,用于基于给定的unicode代码点frozenset拆分unicode字符串。

cypunct的Python项目详细描述


cypunct旨在解决快速拆分unicode的问题 基于一组字符的字符串。

cypunct设计用于python 2.6、2.7和3.3+。因为 cypunct是cython扩展,它(可能)只在cpython中工作 运行时。

对于python 2.6和2.7版本,cypunct只在以下情况下运行 cpython运行时使用标志编译 --enable-unicode=ucs4。cypunct将引发异常 如果python 2运行时不是用ucs-4编译的。

安装

pip最容易安装。只需运行

pip install cypunct

用法

cypunct接受一个unicode字符串和一个frozenset分隔符, 并基于该集合拆分字符串。每个分隔符 应该是单个Unicode代码点-^{TT3}$应该是1。

下面是一个简单的示例,其中我们提供了一个小的frozenset

>>>fromcypunctimportsplit>>>split("James Mishra is the... best human ever, or so I think.",frozenset({' ','.',','}))['James','Mishra','is','the','best','human','ever','or','so','I','think','']

但是,如果只需要拆分空白字符,str.split()much 更好的表现。如果只需要拆分一个字符,str.split(char) 也会更快。

当你需要拆分许多可能的字符时,cypunct真的会发光, 例如整个Unicode character category

下面的示例将拆分所有Unicode标点,而不拆分其他标点。

>>>fromcypunct.unicode_classesimportP>>>split("James Mishra is the... best human ever, or so I think.",P)['James Mishra is the',' best human ever',' or so I think','']

以下Unicode类作为集合提供:

CategoryDescription
COther
CcOther, Format
CfOther, Not Assigned
CoOther, Private Use
CsOther, Surrogate
LLetter
LlLetter, Lowercase
LmLetter, Modifier
LoLetter, Other
LtLetter, Titlecase
LuLetter, Uppercase
MMark
McMark, Space Combining
MeMark, Enclosing
MnMark, Nonspacing
NNumber
NdNumber, Decimal Digit
NlNumber, Letter
NoNumber, Other
PPunctuation
PcPunctuation, Connector
PdPunctuation, Dash
PePunctuation, Close
PfPunctuation, Final Quote
PiPunctuation, Initial Quote
PoPunctuation, Other
PsPunctuation, Open
SSymbol
ScSymbol, Currency
SkSymbol, Modifier
SmSymbol, Math
SoSymbol, Other
ZSeparator
ZlSeparator, Line
ZpSeparator, Paragraph
ZsSeparator, Space

cypunct.unicode_classes.COMMON_SEPARATORSCPS和^{tt11}的并集。$ frozensets。我发现当把文本分成自然的 语言处理应用程序。

如果不为cypunct指定要使用的frozenset,则cypunct将 默认为COMMON_SEPARATORS

更新Unicode数据

目前,cypunct.unicode_classes是从 UnicodeData.txt文件。自动生成脚本存在于 make_punctuation_file.py

大多数cypunct用户不需要关心这个问题,但这很重要 了解您是否遇到Unicode错误或是否希望参与cypunct。

当前的UnicodeData.txt来自ftp://ftp.unicode.org/Public/10.0.0/ucd/UnicodeData.txt

常见问题解答(FAQ)

q:我遇到一个安装错误,涉及 “pkg_resources.versionConflict(设置工具xx.xx.xx)”。 我该怎么解决?

你的setuptools版本很旧,我们无法 用它编译我们的cython扩展。跑步 pip install --upgrade setuptools然后再次尝试安装cypunct。

Q:如果用纯C编写,速度会不会更快?

是的,会的。我懒得手工编写c-cpython扩展,但它在我的todo列表中。 现在,cypunct是“足够快”,我可以在我的 日常生活。

但是,如果你想接受用c重写cypunct的挑战 与当前cython版本完全相同的功能,我将给您100美元。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用外部java程序在minecraft中移动minecraft角色的相机   java输出文本文件中的变量   java LazyLoadingException在我尝试从多通关系获取对象时出现   java json rest API的错误:ClassCastException:org。json。无法将JSONObject强制转换为组织。json。杰索纳雷   java BigInteger。C中的intValue()等价物#   java大写所有字符,但不包括带引号字符串中的字符   java获取特殊字符   javascript为什么Selenium中的所有getX()调用都需要这么长时间?   rabbitmq rabbitmq java客户端并行消费   如何使用selenium Java在popover窗口中提取文本   对象在java中构造一类对象   java Room数据库未实现   json JSONObject可以使用java保存大的格式化双值吗?   有时限的旅行推销员   java HttpsURLConnection openConnection查询   java无法使用Spring@Entity注释创建MySQL表   lambda Java 8仅映射到值类型集合   java提供OSGi服务而不实现接口   java单个对象重写对象数组,不确定原因