我无法弄清楚如何在python中替换字符串中的第二个大写字母 .
for example:
string = "YannickMorin"
我希望它成为yannick-morin
到目前为止,我可以通过 string.lower() 将它全部小写,但是当它找到第二个大写字母时如何设置破折号 .
lower() 方法不会更改字符串,它返回需要打印或分配给另一个变量的值 . 你需要更换它..一个解决方案是:
lower()
strAsList = list(string) strAsList[0] = strAsList[0].lower() strAsList[7] = strAsList[7].lower() strAsList.insert(7, '-') print (''.join(strAsList))
你可以使用Regex
>>> import re >>> split_res = re.findall('[A-Z][^A-Z]*', 'YannickMorin') ['Yannick', 'Morin' ] >>>'-'.join(split_res).lower()
查找不在单词开头的大写字母,然后插入短划线 . 然后将所有内容转换为小写 .
>>> import re >>> re.sub(r'\B([A-Z])', r'-\1', "ThisIsMyText").lower() 'this-is-my-text'
这对于正则表达式来说更像是一项任务:
result = re.sub(r'[a-z]([A-Z])', r'-\1', inputstring).lower()
演示:
>>> import re >>> inputstring = 'YannickMorin' >>> re.sub(r'[a-z]([A-Z])', r'-\1', inputstring).lower() 'yannic-morin'
4 回答
lower()
方法不会更改字符串,它返回需要打印或分配给另一个变量的值 . 你需要更换它..一个解决方案是:你可以使用Regex
查找不在单词开头的大写字母,然后插入短划线 . 然后将所有内容转换为小写 .
这对于正则表达式来说更像是一项任务:
演示: