我喜欢一些string.capwords()
行为的方式,以及行为的一些方式.title()
,但不是单一的方式.
我需要大写的缩写,这样.title()
做但不是string.capwords()
,并且string.capwords()
不会在单引号之后将字母大写,所以我需要两者的组合.我想使用.title(),
然后我需要在撇号之后小写单个字母,只要它们之间没有空格.
例如,这是用户的输入:
string="it's e.t.!"
Run Code Online (Sandbox Code Playgroud)
我想将其转换为:
>>> "It's E.T.!"
Run Code Online (Sandbox Code Playgroud)
.title()
将资本化's',并string.capwords()
不会资本化"et".
您可以使用正则表达式替换(请参阅re.sub
):
>>> s = "it's e.t.!"
>>> import re
>>> re.sub(r"\b(?<!')[a-z]", lambda m: m.group().upper(), s)
"It's E.T.!"
Run Code Online (Sandbox Code Playgroud)
[a-z]
将匹配小写字母.但不是之后'
((?<!')
- 负面的后视断言).这封信应该出现在边界之后; 所以t
不会匹配.
第二个参数re.sub
,lambda
将返回替换字符串.(字母的上部版本),它将用于替换.
归档时间: |
|
查看次数: |
734 次 |
最近记录: |