my_string在python 2.7中从蛇格()转换为小驼峰(myString)的好方法是什么?
显而易见的解决方案是用下划线分隔,将第一个单词以外的每个单词大写,然后重新组合在一起。
但是,我对其他更惯用的解决方案或RegExp实现此目的的方式感到好奇(带有一些大小写修饰符?)
my_string在python 2.7中从蛇格()转换为小驼峰(myString)的好方法是什么?
显而易见的解决方案是用下划线分隔,将第一个单词以外的每个单词大写,然后重新组合在一起。
但是,我对其他更惯用的解决方案或RegExp实现此目的的方式感到好奇(带有一些大小写修饰符?)
Answers:
def to_camel_case(snake_str):
components = snake_str.split('_')
# We capitalize the first letter of each component except the first one
# with the 'title' method and join them together.
return components[0] + ''.join(x.title() for x in components[1:])
例:
In [11]: to_camel_case('snake_case')
Out[11]: 'snakeCase'
to_camel_case确保输入为字符串不是责任,而是调用代码的责任。传递非字符串将引发异常,这很好。那就是例外。
None。您无法防止任何单个错误。如果尝试使用它,则只会掩盖其来源。那是Python,而不是Java。您不必避免例外,而必须对待它们。
_barbarBarcomponents = snake_str.lstrip('_').split('_')
这是另一种方法,仅适用于Python 3.5及更高版本:
def camel(snake_str):
first, *others = snake_str.split('_')
return ''.join([first.lower(), *map(str.title, others)])
join(...)比join([...])这里更好,因为它无需创建列表即可工作)。
join方法的不是理解而是常规列表。如果要避免创建内存列表,可以使用use itertools.chain,但是如果在将蛇形转换为驼峰式大小写时担心内存占用,则会遇到更大的问题。;-)
强制单线:
import string
def to_camel_case(s):
return s[0].lower() + string.capwords(s, sep='_').replace('_', '')[1:] if s else s
return re.sub(r'_([a-z])', lambda x: x.group(1).upper(), name) 请参阅此处)
>>> snake_case = "this_is_a_snake_case_string"
>>> l = snake_case.split("_")
>>> print l[0] + "".join(map(str.capitalize, l[1:]))
'thisIsASnakeCaseString'
另外一个班轮
def to_camel_case(snake_string):
return snake_string.title().replace("_", "")
def to_camel_case(snake_str):
components = snake_str.split('_')
return reduce(lambda x, y: x + y.title(), components[1:], components[0])
所以我需要将带有蛇形大小写参数的整个文件转换为驼峰式大小写。Mathieu Rodic的解决方案效果最好。谢谢。
这是一个在文件上使用它的小脚本。
import re
f = open("in.txt", "r")
words = f.read()
def to_camel_case3(s):
return re.sub(r'_([a-z])', lambda x: x.group(1).upper(), s)
f = open("out.txt", "w")
f.write(to_camel_case3(words))
def toCamel(snake)
return ''.join( word.capitalize()
for word in snake.split('_') )
允许下划线由前面的下划线转义(例如,“ Escaped__snake”将变为“ Escaped_Snake”,而“ usual_snake”将变为“ UsualSnake”。包括对空白的三进制测试。
def toCamel(escaped_snake)
return ''.join( (word.capitalize(), '_')[word=='')
for word in escaped_snake.split('_') )
不要大写第一段(即,“ tHERE_is_a_snake”变成“ thereIsASnake”)
def toCamel(esCAPed_snake)
words = esCAPed_snake.split('_')
return words[0].lower() + ''.join( (word.capitalize(), '_')[word=='')
for word in words[1:] )
也tocamelcase可以轻松地从蛇皮转换为骆驼皮。
$ pip install tocamelcase
然后您可以像这样使用它:
import tocamelcase
print(tocamelcase.convert("non_camel_case"))
# -> non_camel_case → NonCamelCase
也存在decamelize与该模块相反的情况。