某些字符后的小写字母?

时间:2016-03-25 05:29:24

标签: python string

我喜欢string.capwords()行为方式的某些方式,以及.title()行为方式的一些方法,但不是单一方式。

我需要大写的缩写,.title()但不是string.capwords(),而string.capwords()不会在单引号后大写字母,所以我需要两者的组合。我想使用.title(),,然后我需要在撇号之后小写单个字母,只要它们之间没有空格。

例如,这是用户的输入:

string="it's e.t.!"

我想将其转换为:

>>> "It's E.T.!"

.title()会将这些内容大都化,而string.capwords()不会将" e.t。"

大写。

3 个答案:

答案 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

希望这有助于:)