string = "YannickMorin"
我希望它变成yannick-morin。
目前,我可以通过执行string.lower()将所有字符变成小写,但如何在找到第二个大写字母时添加破折号呢?
string = "YannickMorin"
我希望它变成yannick-morin。
目前,我可以通过执行string.lower()将所有字符变成小写,但如何在找到第二个大写字母时添加破折号呢?
>>> import re
>>> split_res = re.findall('[A-Z][^A-Z]*', 'YannickMorin')
['Yannick', 'Morin' ]
>>>'-'.join(split_res).lower()
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'
>>> import re
>>> re.sub(r'\B([A-Z])', r'-\1', "ThisIsMyText").lower()
'this-is-my-text'
lower()方法不会直接改变字符串,它返回一个需要打印出来或赋值给另一个变量的值。你需要替换它。一种解决方案是:
strAsList = list(string)
strAsList[0] = strAsList[0].lower()
strAsList[7] = strAsList[7].lower()
strAsList.insert(7, '-')
print (''.join(strAsList))
re模块将所有大写字母替换为-\1,然后将所有内容转换为小写。或者使用re.split在每个大写字母处进行分割,然后使用'-'.join连接,最后再转换为小写。 - R Nar