我無法弄清楚如何替換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 –