Python 从CamelCase生成详细名称
我试图从Python中的CamelCase字符串中获取详细的名称,但不知道如何解决这个问题 这是用例:Python 从CamelCase生成详细名称,python,string,camelcasing,Python,String,Camelcasing,我试图从Python中的CamelCase字符串中获取详细的名称,但不知道如何解决这个问题 这是用例: class MyClass(object): def verbose_name(self, camelcase): return "my class" # ^-- here I need a way to calculate the # value using the camelcase argument def __s
class MyClass(object):
def verbose_name(self, camelcase):
return "my class"
# ^-- here I need a way to calculate the
# value using the camelcase argument
def __str__(self):
return self.verbose_name(self.__class__.__name__)
我试图实现一个解决方案,其中生成的块和类检测从小写字母到大写字母的转换,但这是非常程序化的,不起作用,而且对于这样一个简单的任务来说变得太复杂
有没有关于解决此问题的简单实现的建议?如果我正确理解您的需求,您希望在案例边界上拆分一个驼峰大小写字符串。正则表达式在这里非常方便 尝试以下实现
>>> ' '.join(re.findall("([A-Z][^A-Z]*)","MyClass")).strip()
'My Class'
如果名称不符合大小写,上述实现将失败。在这种情况下,将caps设置为可选
如果我正确理解了您的需求,那么您希望在案例边界上拆分一个驼峰案例字符串。正则表达式在这里非常方便 尝试以下实现
>>> ' '.join(re.findall("([A-Z][^A-Z]*)","MyClass")).strip()
'My Class'
如果名称不符合大小写,上述实现将失败。在这种情况下,将caps设置为可选
这个怎么样:
def verbose_name(self, camelcase)
return re.sub(r'([a-z])([A-Z])',r'\1 \2', camelcase).lower()
这个怎么样:
def verbose_name(self, camelcase)
return re.sub(r'([a-z])([A-Z])',r'\1 \2', camelcase).lower()
基于阿比吉特的答案
def verbose_name(self, camelcase):
return '_'.join(re.findall("([A-Z][^A-Z]*)", camelcase)).lower()
基于阿比吉特的答案
def verbose_name(self, camelcase):
return '_'.join(re.findall("([A-Z][^A-Z]*)", camelcase)).lower()
啊!芬德尔!。。。我试图在\B上使用某种奇怪的re.split拆分形式,并使用一个前瞻性断言,即下一个内容是大写字母。。。这好多了,啊!芬德尔!。。。我试图在\B上使用某种奇怪的re.split拆分形式,并使用一个前瞻性断言,即下一个内容是大写字母。。。这个好多了。