在Python中将not_camel_case转换为notCamelCase和/或notCamelCase?

2024-09-26 18:20:33 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,this的反面。这是我的尝试,但没用。在

def titlecase(value):
    s1 = re.sub('(_)([a-z][A-Z][0-9]+)', r'\2'.upper(), value)
    return s1

Tags: rereturnvaluedefthisuppers1titlecase
3条回答

您的正则表达式有错误。而不是

([a-z][A-Z][0-9]+) # would match 'oN3' but not 'one'

使用

^{pr2}$

但是这也行不通,因为r'\2'.upper()不能这样使用。相反,请尝试:

s1 = re.sub('(_)([a-zA-Z0-9]+)', lambda p: p.group(2).capitalize(), value)
def titlecase(value):
    return "".join(word.title() for word in value.split("_"))

Python比regex更具可读性,当它不按您的意愿运行时,也更容易修复。在

如果您希望第一个字母也小写,我将使用第二个函数来调用上面的函数来完成大部分工作,然后只将第一个字母小写:

^{pr2}$

@kindall提供好的解决方案(功劳归于他)。 但是,如果您想要语法“myCamel”,第一个单词不需要大写,那么您必须稍微改变一下:

def titlecase(value):
     rest = value.split("_")
     return rest[0]+"".join(word.title() for word in rest[1:])

相关问题 更多 >

    热门问题