如何在Python中将字符串转换为首字母大写格式?

163 投票
10 回答
247206 浏览
提问于 2025-04-17 07:30

举个例子:

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'

撰写回答