John Gruber 的 titlecase.pl 的 Python 端口
项目描述
此过滤器将给定文本更改为标题大写字母,并尝试巧妙处理输入中的 a/an/the 等小词。没有封顶的“小词”列表来自纽约时报风格手册,以及一些其他的,如“vs”和“v”。
过滤器采用一些启发式方法来猜测不需要转换的缩写。
原来的 |
转换 |
|---|---|
这是一个测验 |
这是一个测验 |
这是一个测验 |
这是一个测验 |
这是一个测验 |
这是一个测验 |
包测试套件中提供了更多极端案例的示例和预期行为 。
这个库是Stuart Colville 的 titlecase.py的复活,而后者又是John Gruber 的 titlecase.pl 的一个端口。
问题、更新、拉取请求等应定向 到 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
限制
这是一个尽力而为的库,它使用正则表达式来尝试做智能的事情,但会有局限性。例如,它没有区分首字母缩写词和单词的上下文意识:我们(我们)与美国(美国)。
正则表达式和标题规则是为美式英语编写的。虽然有对 Unicode 字符的基本支持,例如“厄尔尼诺”之类的东西会起作用,但重音或非英语短语可能无法正确处理。
如果有人有具体的解决方案来改善库的这些或其他缺点,非常欢迎拉取请求!