为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕容3067478 2023-01-04 16:01:40
我无法找到以下问题的直接解决方案。我在数据框中有一列,其中有 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感谢您的时间
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

您可以尝试向您的正则表达式模式添加一个回顾,断言大写字母之前有一个非破折号字符:


def add_space(Neighborhood):

    return re.sub(r'(?<=[^-])([A-Z])', r' \1', Neighborhood)


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


查看完整回答
反对 回复 2023-01-04
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

这将做:


def add_space(Neighborhood):

        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'


查看完整回答
反对 回复 2023-01-04
  • 2 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信