此程序旨在将某些内容从正常更改为camelCase。 EG:Not_Camel_case - > notCamelCase或Camel_Case to camelCase。
def titlecase(value):
return "".join(word.title() for word in value.split("_"))
def titlecase2(value):
return value[:1].lower() + titlecase(value)[1:]
def to_camel(value):
return titlecase2(value)
这输出我想要的但是......这是为了比赛而且输入Not_An_SMS返回notAnSms而不是notAnSMS?同时输入num2words应该返回相同但是我的程序将其大写为num2Words。我该怎么做才能解决这些问题?
编辑: 我必须改变函数内的东西而不是输出,因为comp直接检查函数,特别是to_camel。
答案 0 :(得分:0)
如果您希望Not_An_SMS
返回notAnSms
,则必须停止使用word.title()
函数,而只是将每个单词的第一个字母大写/小写,但保留为其他人。
这仍然意味着SMS_status
将返回sMSStatus
,但我想这可以被视为例外。如果你想解决这个问题,你需要有一个单词词典,这样你就可以弄清楚某些东西是不是一个单词。而这当然不会影响竞争的范围。
答案 1 :(得分:0)
这个简化的作品是从Rails中偷来的:
acronyms={}
def camelize(identifier, upper_first=False):
words = identifier.split('_')
if upper_first:
return ''.join(acronyms.get(w) or w.capitalize() for w in words)
else:
return (acronyms.get(words[0]) or words[0].lower()) + \
''.join(acronyms.get(w) or w.capitalize() for w in words[1:])
acronyms['SMS']='SMS'