例如:
HILO -> Hilo new york -> New York SAN FRANCISCO -> San Francisco
是否存在执行此任务的库或标准方法?
为什么不写一个呢? 这样的东西可以满足你的要求:
def FixCase(st): return ' '.join(''.join([w[0].upper(), w[1:].lower()]) for w in st.split())
def capitalizeWords(s): return re.sub(r'\w+', lambda m:m.group(0).capitalize(), s)
re.sub可以使用一个函数作为“替换”(而不仅仅是一个字符串,这是大多数人似乎都熟悉的用法)。对于模式的每次匹配,都将使用一个 re.Match对象调用 repl 函数,并且结果(应该是一个字符串)将用作该匹配的替换。
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。
为什么不使用 title正确的文档:
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'
这一个总是以小写字母开头,并且去掉非字母数字字符:
def camelCase(st): output = ''.join(x for x in st.title() if x.isalnum()) return output[0].lower() + output[1:]
只要使用. title () ,它就会将每个单词的首字母转换为大写字母,其余为小写字母:
>>> a='mohs shahid ss' >>> a.title() 'Mohs Shahid Ss' >>> a='TRUE' >>> b=a.title() >>> b 'True' >>> eval(b) True
注意: 为什么我要提供另一个答案?这个答案是基于这个问题的标题和 Camelcase 定义为: 一系列连接起来的单词(没有空格!)每个原始单词都以大写字母开头(其余为小写) ,但系列的第一个单词(完全小写)除外。此外,还假定“所有字符串”指的是 ASCII 字符集; unicode 不适用于此解决方案)。
根据上面的定义,这个函数
import re word_regex_pattern = re.compile("[^A-Za-z]+") def camel(chars): words = word_regex_pattern.split(chars) return "".join(w.lower() if i is 0 else w.title() for i, w in enumerate(words))
,当调用,将导致这种方式
camel("San Francisco") # sanFrancisco camel("SAN-FRANCISCO") # sanFrancisco camel("san_francisco") # sanFrancisco
注意,当出现一个已经大小写的驼峰字符串时,它将失败!
camel("sanFrancisco") # sanfrancisco <-- noted limitation
请注意,它使用许多 unicode 字符串失败
camel("México City") # mXicoCity <-- can't handle unicode
对于这些情况,我没有一个解决方案(或者其他可以用一些创造性的方法介绍的情况)。因此,在所有与字符串有关的事情中,请涵盖您自己的边缘情况,并且祝您在使用 unicode 时好运!
潜在库: https://pypi.org/project/stringcase/
import stringcase stringcase.camelcase('foo_bar_baz') # => "fooBarBaz"
虽然它是否会留下空间是值得怀疑的。(示例显示它删除了空格,但是存在一个 bug 跟踪器问题,指出它留下了空格。)
我想在这篇文章中加上我的一点贡献:
def to_camelcase(str): return ' '.join([t.title() for t in str.split()])
def camelCase(st): s = st.title() d = "".join(s.split()) d = d.replace(d[0],d[0].lower()) return d
来自代码大战-编写简单的代码。用于字符串的 Python 中的 camelCase 方法。所有单词的第一个字母必须大写,不能有空格。 Camelcase (“ hello case”) = > HelloCase 骆驼大小写(“骆驼大小写”) = > 骆驼大小写(CamelCaseWord)
def camel_case(string): titled_string = string.title() space_joined_string = titled_string.replace(' ', '') return space_joined_string