【问题标题】:Python String CapitalizePython字符串大写
【发布时间】:2017-10-22 10:43:48
【问题描述】:
from string import capwords

t = "\"i'm happy,\" said tanby"
sText = t.split()
rText = []

for str in sText:
    if '\"' in str[0]:
        t = capwords(str, sep='\"')
        rText.append(t)
    else:
        t = capwords(str)
        rText.append(t)

print(' '.join(rText))

>>> "I'm Happy," Said Tanby
     ^   ^       ^    ^

忽略引号并大写。 当使用title() 时,变成“我是,当使用capwords() 时,变成”我是。 有没有更好的办法?

【问题讨论】:

  • 所以你想独立地大写每个单词?
  • 没错。但我只是在寻找更好的方法。

标签: python capitalize


【解决方案1】:

引号会干扰capwords 算法。将re.sub 与允许单词中包含单引号的模式一起使用可以修复它。正则表达式匹配一个或多个\w(单词字符)或单引号。每个匹配项都传递给 lambda 函数并大写以进行替换。

>>> import re
>>> s='"i\'m happy," said tanby'
>>> print(re.sub(r"\b[\w']+\b",lambda m: m.group().capitalize(),s))
"I'm Happy," Said Tanby

【讨论】:

  • 我明白了。这是一个正则表达式。不错。
猜你喜欢
  • 2020-09-13
  • 2019-04-20
  • 2010-11-08
  • 2016-12-11
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
相关资源
最近更新 更多