跳转到主要内容

John Gruber的titlecase.pl的Python版本

项目描述

https://codecov.io/gh/ppannuto/python-titlecase/branch/main/graph/badge.svg?token=J1Li8uhB8q

此过滤器将给定文本转换为标题大小写,并尝试在输入中对小词(如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 (14.4 kB 查看哈希值)

上传时间:

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面