猿问

我想在大写字母开始的地方分隔一个字符串,但如果它前面有一个连字符

我无法找到以下问题的直接解决方案。


我在数据框中有一列,其中有 str 项,例如:


'RosemontCentral'


'Dollard-des-OrmeauxEast'


我想在大写字母开始的地方分隔一个字符串,但如果它前面有连字符则不分隔。


例如:


'RosemontCentral'到'Rosemont Central'


'Dollard-des-OrmeauxEast'到 'Dollard-des-Ormeaux East'


到目前为止,我有波纹管正则表达式功能。它对诸如第一个没有带连字符的词的项目做得相当好。但是,不是那些有连字符的。此外,下面的正则表达式函数在字符串的最开头添加了一个不需要的前导空格。就像下面的那个。


'Dollard-des-Ormeaux East'


def add_space(Neighborhood):

        return re.sub( r"([A-Z])", r" \1", Neighborhood)


df['Neighborhood'] =  df['Neighborhood'].apply(add_space)


df


感谢您的时间


慕容3067478
浏览 90回答 2
2回答

哆啦的时光机

您可以尝试向您的正则表达式模式添加一个回顾,断言大写字母之前有一个非破折号字符:def add_space(Neighborhood):&nbsp; &nbsp; return re.sub(r'(?<=[^-])([A-Z])', r' \1', Neighborhood)df['Neighborhood'] =&nbsp; df['Neighborhood'].apply(add_space)

慕码人8056858

这将做:def add_space(Neighborhood):&nbsp; &nbsp; &nbsp; &nbsp; return re.sub("([a-z])([A-Z])","\g<1> \g<2>",Neighborhood)add_space('Dollard-des-OrmeauxEast')# 'Dollard-des-Ormeaux East'add_space('RosemontCentral')# 'Rosemont Central'
随时随地看视频慕课网APP

相关分类

Python
我要回答