尝试在Python / pandas中使用正则表达式获取子字符串

问题描述 投票:2回答:2

我知道这可能看起来很愚蠢,但我一直在寻找各地并尝试使用正则表达式并且徒劳无功。我的脚本永远不适用于我的数据集上的所有类型的字符串。

我有这个包含原始数据的列(三种情况):

20181223-FB-BOOST-AAAA-CC Auchy-Les-Mines - Père Noel
20161224-FB-BOOST-SSSS-CC LeMarine - XXX XXX
20161223-FB-BOOST-XXXX-CC Bonjour le monde - Blah blah

所以我想做的是在CC之后和“ - ”之前将字符串放在中间。我写了一个脚本,它适用于第二种情况,但从来没有其他两种情况:

1st case: Auchy-Les-Mines
2nd case: LeMarine
3rd case: Bonjour le monde

这是我使用的正则表达式,但从不适用于所有情况:regex = r"\s\b.*-."

提前致谢 !

python regex pandas substring data-cleaning
2个回答
2
投票

你是我用的

df['Col'].str.extract(r'-CC\s+(.*?)\s+-')

the regex demo

图案细节

  • -CC - 文字子串
  • \s+ - 1+空格
  • (.*?) - 第1组(此值将由.str.extract返回):除换行之外的任何0 +字符,尽可能少
  • \s+ - 1+空格(+在这里很重要)
  • - - 一个连字符

\s+的两端都有(.*?)模式的事实将确保结果已经从空白中剥离,无论有多少空格。


-1
投票

您可以通过以下方式轻松完成:

result = df.raw_data.str.extract(r'-CC (.*) -')
© www.soinside.com 2019 - 2024. All rights reserved.