使用字典转换camelCase为snake_case时触发NameError的问题
解决camelCase转snake_case时的NameError问题
错误原因
你触发的NameError: name 'uppercaseLetters' is not defined,核心问题是字典定义语法错误:
Python中创建字典需要用=给变量赋值,而你写的uppercaseLetters: { ... }是类型注解语法,它只用来标注变量类型,并不会实际创建字典对象,所以后续循环找不到这个变量。
修正后的代码
把字典定义的冒号改成等号,同时建议避免用input作为变量名(会覆盖Python内置的input()函数):
uppercaseLetters = { "A": "_a", "B": "_b", "C": "_c", "D": "_d", "E": "_e", "F": "_f", "G": "_g", "H": "_h", "I": "_i", "J": "_j", "K": "_k", "L": "_l", "M": "_m", "N": "_n", "O": "_o", "P": "_p", "Q": "_q", "R": "_r", "S": "_s", "T": "_t", "U": "_u", "V": "_v", "W": "_w", "X": "_x", "Y": "_y", "Z": "_z", } input_str = input("camelCase: ").strip() for letter in uppercaseLetters: input_str = input_str.replace(letter, uppercaseLetters[letter]) print("snake_case: ", input_str)
更简洁的优化方案
不用手动编写全字母字典,直接通过字符判断实现转换,代码更精简:
input_str = input("camelCase: ").strip() # 遍历每个字符,大写字母前加下划线并转小写,其他字符直接保留 snake_case = ''.join(f"_{c.lower()}" if c.isupper() else c for c in input_str) print("snake_case: ", snake_case)
内容的提问来源于stack exchange,提问作者Brian Johnson
相关产品推荐
相关产品推荐

