首页 > 解决方案 > 拆分但保留基于多个分隔符的连续字符串(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]

标签: pythonregexstring

解决方案


您可以使用re.sub空格替换以下正则表达式的匹配项。

r'(?=(?:foundation|lips|lipstick|concealer|bronzer) )'

正则表达式演示< ¯\_(ツ)_/¯ > Python 演示

Python 的正则表达式引擎匹配指示的字符串之一,后跟一个空格,以正向预测。包含空格是为了避免匹配,例如,"lips""lipstick"007lipsticked :". \b(也可以使用单词边界 , 。)

请注意,匹配是一个空字符串(即零宽度匹配)。在"jadefoundation :"中,匹配可以被认为是 和 之间的空"e"字符串"f"

“期望的输出”显示":"被删除之前的空间。由于前面的空格"@"没有被删除,我认为前面的空格被删除"@"是无意的,但如果我错了,请纠正我。


推荐阅读