如何在Python中将字符串转换为首字母大写格式?
举个例子:
HILO -> Hilo
new york -> New York
SAN FRANCISCO -> San Francisco
有没有什么库或者标准的方法可以完成这个任务呢?
10 个回答
15
def capitalizeWords(s):
return re.sub(r'\w+', lambda m:m.group(0).capitalize(), s)
re.sub
这个函数可以接受一个函数作为“替换内容”,而不仅仅是一个字符串。大多数人可能只知道用字符串来替换。这个替换函数会在每次找到匹配的地方时被调用,并且会传入一个 re.Match
对象。你需要返回一个字符串,这个字符串会用来替换找到的内容。
更详细的说法是:
WORD_RE = re.compile(r'\w+')
def capitalizeMatch(m):
return m.group(0).capitalize()
def capitalizeWords(s):
return WORD_RE.sub(capitalizeMatch, s)
这样做会提前编译好模式(通常被认为是好的做法),并且使用一个命名的函数,而不是使用一个匿名函数(lambda)。
34
这个代码的作用是让字符串的开头总是小写字母,并且去掉所有不是字母或数字的字符。
def camelCase(st):
output = ''.join(x for x in st.title() if x.isalnum())
return output[0].lower() + output[1:]
353
为什么不直接使用title
呢?这是文档里的说明:
>>> "they're bill's friends from the UK".title()
"They'Re Bill'S Friends From The Uk"
如果你真的想要PascalCase格式,可以使用这个:
>>> ''.join(x for x in 'make IT pascal CaSe'.title() if not x.isspace())
'MakeItPascalCase'