2024-09-26 18:20:33 发布
网友
基本上,this的反面。这是我的尝试,但没用。在
def titlecase(value): s1 = re.sub('(_)([a-z][A-Z][0-9]+)', r'\2'.upper(), value) return s1
您的正则表达式有错误。而不是
([a-z][A-Z][0-9]+) # would match 'oN3' but not 'one'
使用
但是这也行不通,因为r'\2'.upper()不能这样使用。相反,请尝试:
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更具可读性,当它不按您的意愿运行时,也更容易修复。在
如果您希望第一个字母也小写,我将使用第二个函数来调用上面的函数来完成大部分工作,然后只将第一个字母小写:
@kindall提供好的解决方案(功劳归于他)。 但是,如果您想要语法“myCamel”,第一个单词不需要大写,那么您必须稍微改变一下:
@kindall
def titlecase(value): rest = value.split("_") return rest[0]+"".join(word.title() for word in rest[1:])
您的正则表达式有错误。而不是
使用
^{pr2}$但是这也行不通,因为
r'\2'.upper()
不能这样使用。相反,请尝试:Python比regex更具可读性,当它不按您的意愿运行时,也更容易修复。在
如果您希望第一个字母也小写,我将使用第二个函数来调用上面的函数来完成大部分工作,然后只将第一个字母小写:
^{pr2}$@kindall
提供好的解决方案(功劳归于他)。 但是,如果您想要语法“myCamel”,第一个单词不需要大写,那么您必须稍微改变一下:相关问题 更多 >
编程相关推荐