John Gruber的titlecase.pl的Python版本
项目描述
此过滤器将给定文本转换为标题大小写,并尝试在输入中对小词(如a/an/the)进行智能处理。不进行大写的“小词”列表来自《纽约时报风格手册》,还有一些其他词如‘vs’和‘v’。
过滤器使用一些启发式算法来猜测不需要转换的缩写。
原始 |
转换 |
---|---|
this is a test |
This Is a Test |
THIS IS A TEST |
This Is a Test |
this is a TEST |
This Is a TEST |
更多示例和边缘情况下的预期行为可以在包测试套件中找到。
这个库是Stuart Colville的titlecase.py的复活,而titlecase.py又是John Gruber的titlecase.pl的移植。
问题、更新、pull请求等应发送到GitHub。
安装
最简单的方法是使用pip
(sudo) pip install titlecase
用法
Titlecase只提供了一个函数,即
>>> from titlecase import titlecase
>>> titlecase('a thing')
'A Thing'
也可以提供一个回调函数,它将对每个单词进行调用
>>> def abbreviations(word, **kwargs):
... if word.upper() in ('TCP', 'UDP'):
... return word.upper()
...
>>> titlecase.titlecase('a simple tcp and udp wrapper', callback=abbreviations)
'A Simple TCP and UDP Wrapper'
回调函数将一个all_caps关键字参数传递,表示整行文本是否全部大写。从回调函数返回None将允许titlecase按正常方式处理单词。
命令行用法
Titlecase还提供了一个命令行工具titlecase
$ titlecase make me a title Make Me a Title $ echo "Can pipe and/or whatever else" | titlecase Can Pipe and/or Whatever Else # Or read/write files: $ titlecase -f infile -o outfile
此外,常用的缩写可以保存在本地文件中,文件路径为~/.titlecase.txt。该文件每行包含一个缩写。缩写将按照提供的方式保留在标题中。一旦有例如一行写着TCP,那么在命令行使用时将自动使用它。
$ titlecase I LOVE TCP I Love TCP
局限性
这是一个尽力而为的库,它使用正则表达式来尝试做一些智能的事情,但会有限制。例如,它没有上下文感知能力来区分缩写和单词:us(我们)与US(美国)。
正则表达式和标题化规则是为美式英语编写的。尽管有基本的Unicode字符支持,例如“El Niño”将工作,但很可能会错误地处理重音或非英语短语。
如果有人有具体的解决方案来改进这些或库的其他不足,pull请求非常欢迎!
项目详情
titlecase-2.4.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7d83a277ccbbda11a2944e78a63e5ccaf3d32f828c594312e4862f9a07f635f5 |
|
MD5 | f7b8a85bdd22e06b8a3b1cdbc0e5ddfc |
|
BLAKE2b-256 | 631704d2d3e30e2bc5a3eefa1060b08e3fb628510440f938eaecabbe08976a26 |