Python: 改变大写字母
Python: Change uppercase letter
我不知道如何替换 python 中字符串中的第二个大写字母。
例如:
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'-', inputstring).lower()
演示:
>>> import re
>>> inputstring = 'YannickMorin'
>>> re.sub(r'[a-z]([A-Z])', r'-', inputstring).lower()
'yannic-morin'
lower()
方法不会就地更改字符串,它 returns 需要打印的值,或分配给另一个变量。您需要更换它。一种解决方案是:
strAsList = list(string)
strAsList[0] = strAsList[0].lower()
strAsList[7] = strAsList[7].lower()
strAsList.insert(7, '-')
print (''.join(strAsList))
找出不在单词开头的大写字母并在前面插入破折号。然后全部转为小写。
>>> import re
>>> re.sub(r'\B([A-Z])', r'-', "ThisIsMyText").lower()
'this-is-my-text'
我不知道如何替换 python 中字符串中的第二个大写字母。
例如:
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'-', inputstring).lower()
演示:
>>> import re
>>> inputstring = 'YannickMorin'
>>> re.sub(r'[a-z]([A-Z])', r'-', inputstring).lower()
'yannic-morin'
lower()
方法不会就地更改字符串,它 returns 需要打印的值,或分配给另一个变量。您需要更换它。一种解决方案是:
strAsList = list(string)
strAsList[0] = strAsList[0].lower()
strAsList[7] = strAsList[7].lower()
strAsList.insert(7, '-')
print (''.join(strAsList))
找出不在单词开头的大写字母并在前面插入破折号。然后全部转为小写。
>>> import re
>>> re.sub(r'\B([A-Z])', r'-', "ThisIsMyText").lower()
'this-is-my-text'