对于像AbcdEfgh这样的关键字我想在单词中间发生大小写更改时插入_。因此:AbcdEfgh
转换为abcd_efgh
有什么想法吗?
答案 0 :(得分:2)
你走了,
>>> s = "abcdEfgh"
>>> re.sub(r'\B[A-Z]\B', lambda x: '_' + x.group().lower(), s)
'abcd_efgh'
>>> re.sub(r'\B[A-Z]\B', lambda x: '_' + x.group().lower(), 'AbcdEfgH')
'Abcd_efgH'
\B
匹配两个单词字符或两个非单词字符,因为您的输入只包含单词字符,上面的正则表达式\B[A-Z]\B
必须匹配中间存在的大写字母。这不会触及开头或结尾处存在的大写字母。
修改强>
>>> re.sub(r'\B[A-Z]', lambda x: '_' + x.group().lower() , re.sub(r'^[A-Z]', lambda m: m.group().lower(), 'AbcdEfgh'))
'abcd_efgh'