如何将缩写序数的大小写更改为降低,同时将字符串的其余部分保留在标题大小写中?

Ell*_*ott 2 python street-address

我正在编写一个 python 脚本来将完整的大写地址转换为标题大小写。我面临的问题是,当我申请.title()SOUTH 16TH STREET这样的字符串时,我得到的是South 16 Th Street。所需的转换是South 16 th Street,其中序数的缩写是小写。

python 中实现此目的的简单方法是什么?我正在考虑使用某种正则表达式。

小智 5

为了狭隘地解决您提出的问题,我认为您可能会觉得string.capwords()有用。它将 split -> capitalize -> join 序列封装到单个命令中。

>>> address = "SOUTH 16TH STREET"
>>> capwords(address)
'South 16th Street'
Run Code Online (Sandbox Code Playgroud)

在 Python 3.4 中查看有关该命令的更多信息...

https://docs.python.org/3.4/library/string.html#string-functions

它也存在于早期版本的 Python 中。

但是,将您的问题扩大到一般性的格式,您可能会遇到这种简单化的方法的麻烦。可能需要更复杂(例如基于正则表达式)的方法。使用我的语言环境中的示例:

>>> address = "Highway 99N"  # Wanting'Highway 99N'
>>> capwords(address)
'Hwy 99n'
Run Code Online (Sandbox Code Playgroud)

地址解析(和格式化)是一个棘手的问题,因为合法地址的变化量以及人们编写它们的不同方式(缩写等)。

如果您不喜欢 regex 方法,pyparsing模块也可能是一种方法。