Python驼峰转蛇形命名程序问题:如何替换大写字母而非追加?
解决camelCase转snake_case的Python代码问题
你的代码问题出在初始化snakecase的方式上:你先把整个驼峰字符串转成了全小写,之后遍历原字符串的大写字母时,只是把下划线和小写字母追加到了末尾,而不是替换掉原来对应位置的字符,导致结果出现重复内容。比如输入camelCase,你的代码会输出camelcase_c,而不是正确的camel_case。
下面给两种可行的解决方法:
方法一:逐个字符构建结果字符串
从头开始拼接结果,遇到大写字母就插入下划线并转小写,小写字母直接拼接:
camelcase = input("camelCase: ") snakecase = "" for c in camelcase: if c.isupper(): snakecase += "_" + c.lower() else: snakecase += c print(snakecase)
方法二:用正则表达式快速处理
借助re模块的替换功能,一行代码搞定,适合处理复杂的驼峰字符串:
import re camelcase = input("camelCase: ") snakecase = re.sub(r'([A-Z])', r'_\1', camelcase).lower() print(snakecase)
原理是用正则匹配所有大写字母,把每个大写字母替换成_加该字母,最后再把整个字符串转成小写,完美实现转换。
内容的提问来源于stack exchange,提问作者omen
相关产品推荐
相关产品推荐

