我无法弄清楚如何替换python中字符串中的第二个大写字母。Python:更改大写字母
例如:
string = "YannickMorin"
我希望它成为雅尼克 - 莫兰
截至现在,我可以做string.lower()使其全部用小写,但如何把当它发现第二个大写字母时是短划线。
我无法弄清楚如何替换python中字符串中的第二个大写字母。Python:更改大写字母
例如:
string = "YannickMorin"
我希望它成为雅尼克 - 莫兰
截至现在,我可以做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'
的lower()
方法不会更改到位串它返回需要打印出来的值,或者分配给另一个变量。您需要更换它..一个解决方案是:
strAsList = list(string)
strAsList[0] = strAsList[0].lower()
strAsList[7] = strAsList[7].lower()
strAsList.insert(7, '-')
print (''.join(strAsList))
OP想要将TitleCase转换为虚线。 – Kevin
查找大写字母,不是在单词的开始处插入破折号。然后将所有内容转换为小写。
>>> import re
>>> re.sub(r'\B([A-Z])', r'-\1', "ThisIsMyText").lower()
'this-is-my-text'
您可以使用're'模块将所有大写字母与' - \ 1'配合使用,然后将所有小写字母都设为小写字母。或者使用're.split'在每个大写字母处拆分,然后使用'' - '。join',然后转换为小写字母 –
以下是类似的代码:http://stackoverflow.com/questions/1175208/elegant-python-function -to-convert-camelcase-to-camel-case –