我喜欢 string.capwords()
的一些行为方式,以及 .title()
的一些行为方式,但不是一个。
我需要缩写大写,.title()
可以,但 string.capwords()
和 string.capwords()
不需要单引号后的字母不会大写,所以我需要两者的结合。我想使用 .title(),
然后我需要在撇号后面没有空格的情况下将单个字母小写。
例如,这是用户的输入:
string="it's e.t.!"
我想把它转换成:
>>> "It's E.T.!"
.title()
会将“s”大写,string.capwords()
不会将“e.t.”大写。
最佳答案
您可以使用正则表达式替换(参见 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.!"
[a-z]
将匹配小写字母。但不是在 '
之后((?<!')
- 负面回顾断言)。字母应出现在单词边界之后;所以t
将不会匹配。
re.sub
的第二个参数, lambda
将返回替换字符串。 (字母的上部版本),它将用于替换。
关于python - 某个字符后的小写字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36214553/