python - 我想在大写字母开始的地方分隔一个字符串,但如果它前面有一个连字符,则在 python 中使用正则表达式
问题描述
我无法找到解决以下问题的直接解决方案。
我在数据框中有一列,其中有 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
感谢您的时间
解决方案
您可以尝试在您的正则表达式模式中添加一个lookbehind,它断言一个非破折号字符在大写字母之前:
def add_space(Neighborhood):
return re.sub(r'(?<=[^-])([A-Z])', r' \1', Neighborhood)
df['Neighborhood'] = df['Neighborhood'].apply(add_space)
推荐阅读
- javascript - 我正在尝试编写几个函数,一个将一本书添加到一个空数组中,另一个函数将它呈现在页面上。它不工作
- docker - 在 docker 中运行时如何查看烧瓶中的记录器信息
- r - 如何使用 glmnet(套索)获得预测值?
- django - 如何使用 Django 管理表单验证多个字段
- scenekit - SwiftUI + Scenekit + Combine + GeometryReader ==> 可滚动的 3D 模型列表 + 通过滚动列表旋转 3D 模型
- ffmpeg - ffmpeg如何使用AMD硬件加速编码器?
- database - 有谁知道保存参数和过程名称(Oracle)的示例结构表?
- java - 何时使用 firebase 功能以及何时使用 firestore 客户端功能?
- javascript - 什么都不等?使用空等待来分解大型同步函数
- python - 我如何打印在 if 语句中执行的值或方程