尝试仅使用大写变体替换_(字符)。 例如:
hello_string_processing_in_python to helloStringProcessingInPython
由于字符串在Python中是不可变的,如何有效地完成字符串替换?
ss = 'hello_string_processing_in_python'
for i in re.finditer('_(\w)', ss):
????
答案 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:])