在Python中将snake_case转换为lowerCamelCase

时间:2015-07-21 06:22:01

标签: python regex

尝试仅使用大写变体替换_(字符)。 例如:

hello_string_processing_in_python to helloStringProcessingInPython

由于字符串在Python中是不可变的,如何有效地完成字符串替换?

ss = 'hello_string_processing_in_python'
for i in re.finditer('_(\w)', ss):
    ????

7 个答案:

答案 0 :(得分:6)

你可以试试这个,

>>> s = "hello_string_processing_in_python"
>>> re.sub(r'_([a-z])', lambda m: m.group(1).upper(), s)
'helloStringProcessingInPython'

答案 1 :(得分:1)

除了使用正则表达式,您还可以循环遍历字符串并构建一个新字符串(new_string):

s = "hello_string_processing_in_python"

new_string = ""
capitalize_next = False
for character in s:
    if capitalize_next:
        new_string += character.upper()
        capitalize_next = False
    elif character == '_':
        capitalize_next = True
    else:
        new_string += character

print new_string

将打印

>>> 
helloStringProcessingInPython

答案 2 :(得分:1)

您可以使用re.sub:

的回调函数来完成此操作
import re
def repl(m):
    return m.group(1).upper()

ss = 'hello_string_processing_in_python'
print re.sub(r"_(\w)", repl, ss) 

请参阅demo

答案 3 :(得分:1)

没有拆分,没有正则表达式,确保第一个字符是小写的:

print ss[0].lower() + ss.title()[1:].replace("_", "")

helloStringProcessingInPython

答案 4 :(得分:0)

作为非正则表达式解决方案,您可以使用_拆分字符串,只需将您的字词大写并加入其中:

>>> ''.join([i.title() for i in ss.split('_')])
'HelloStringProcessingInPython'

但是,如果您正在寻找正则表达式方法,可以使用re.sub替换正则表达式的sting。如果你想用下一个字符的大写替换_,你可以这样做:

>>> ss = 'hello_string_processing_in_python'
>>> re.sub(r'_(\w)',lambda x:x.group(1).upper()+x.group(1),ss)
'helloSstringPprocessingIinPpython'

或者如果您想用大写替换下一个字符,则需要添加x.group(1)

>>> re.sub(r'_(\w)',lambda x:x.group(1).upper(),ss)
'helloStringProcessingInPython'

答案 5 :(得分:0)

a = 'hello_string_processing_in_python'

b = a.split('_')

c = b[0]+''.join([i.capitalize() for i in b[1:]])

输出 - 'helloStringProcessingInPython'

答案 6 :(得分:0)

只需添加另一种方法:

def to_camel_case(input_str):
    words = input_str.split('_')
    return words[0] + "".join(x.title() for x in words[1:])