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