某些字符后的小写字母?

Sha*_*kol 2 python string

我喜欢一些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".

fal*_*tru 7

您可以使用正则表达式替换(请参阅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将返回替换字符串.(字母的上部版本),它将用于替换.