繁体   English   中英

我想在大写字母开始的地方分隔一个字符串,但如果它前面有一个连字符,则在 python 中使用正则表达式

[英]I want to separate a string at the point where a capital letter starts but not if its preceded by a hyphen using regex in python

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

我在 dataframe 中有一列,其中有如下 str 项:

'RosemontCentral'

'Dollard-des-OrmeauxEast'

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

例如:

'RosemontCentral''Rosemont Central'

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

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

'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

感谢您的时间

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

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

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

这将做:

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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM