我喜欢string.capwords()
行为方式的某些方式,以及.title()
行为方式的一些方法,但不是单一方式。
我需要大写的缩写,.title()
但不是string.capwords()
,而string.capwords()
不会在单引号后大写字母,所以我需要两者的组合。我想使用.title(),
,然后我需要在撇号之后小写单个字母,只要它们之间没有空格。
例如,这是用户的输入:
string="it's e.t.!"
我想将其转换为:
>>> "It's E.T.!"
.title()
会将这些内容大都化,而string.capwords()
不会将" e.t。"
答案 0 :(得分:7)
您可以使用正则表达式替换(请参阅re.sub
):
alter table mytable AUTO_INCREMENT=240126;
>>> 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
将返回替换字符串。 (字母的上部版本),它将用于替换。
答案 1 :(得分:1)
a = ".".join( [word.capitalize() for word in "it's e.t.!".split(".")] )
b = " ".join( [word.capitalize() for word in a.split(" ")] )
print(b)
编辑使用大写功能代替。现在,它开始看起来像可用的东西:)。但是这个解决方案不能与其他空白字符一起使用。为此,我会选择falsetru的解决方案。
答案 2 :(得分:0)
如果你不想使用正则表达式,你总是可以使用这个简单的for循环
s = "it's e.t.!"
capital_s = ''
pos_quote = s.index("'")
for pos, alpha in enumerate(s):
if pos not in [pos_quote-1, pos_quote+1]:
alpha = alpha.upper()
capital_s += alpha
print capital_s
希望这有助于:)