python - 拆分但保留基于多个分隔符的连续字符串(python)
问题描述
在我正在使用的数据集中,化妆短语(即粉底、唇/口红、遮瑕膏、古铜色等)与之前的短语捆绑在一起(参见下面的示例)。如何在整个数据集中拆分/分区捆绑的短语但保留它们?
示例短语
‘vamplipstick @’
‘208bronzer :’
‘jadefoundation :’
‘nc45blush @’
‘eyeseyeliner @’
‘kikomilanolips :’
‘235concealer @’
理想输出
‘vamp lipstick @’
‘208 bronzer:’
‘jade foundation:’
‘nc45 blush @’
‘eyes eyeliner @’
‘kikomilano lips:’
‘235 concealer @’
到目前为止的代码
makeup = r"\w+\s+[@:]"
separators = ["foundation", "bronzer", "lips", "lipstick", "concealer", "blush", "eyeliner"]
[makeup.partition(<?list_multiple_separators?>) for makeup in df]
解决方案
您可以使用re.sub
空格替换以下正则表达式的匹配项。
r'(?=(?:foundation|lips|lipstick|concealer|bronzer) )'
正则表达式演示< ¯\_(ツ)_/¯ > Python 演示
Python 的正则表达式引擎匹配指示的字符串之一,后跟一个空格,以正向预测。包含空格是为了避免匹配,例如,"lips"
或"lipstick"
在007lipsticked :"
. \b
(也可以使用单词边界 , 。)
请注意,匹配是一个空字符串(即零宽度匹配)。在"jadefoundation :"
中,匹配可以被认为是 和 之间的空"e"
字符串"f"
。
“期望的输出”显示":"
被删除之前的空间。由于前面的空格"@"
没有被删除,我认为前面的空格被删除"@"
是无意的,但如果我错了,请纠正我。
推荐阅读
- c# - 未正确创建线程。非常简单的WaitAny c#
- regex - EXPECT 脚本中的正则表达式模式匹配
- javascript - 如何使用 javascript 验证 smarty 代码?
- django - 在本地开发中通过不同端口共享会话变量
- powerbi - 如何在 power bi 中使用度量作为轴
- c++ - 在 LLVM 中设置 DebugLoc 后出现不匹配的子程序错误
- python - PIL 从 I;16 转换为 JPEG 产生白色图像
- c# - 如何在 Unity 中使用 c# 脚本更改动画器变量?
- javascript - 开玩笑的预期模拟未调用(redux 组件)
- node.js - 有什么方法可以帮助我在 mongodb 集合中自动创建文档?