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

     2023-03-12     303

关键词:

【中文标题】尝试在 Python / pandas 中使用正则表达式获取子字符串【英文标题】:Trying to get a substring using regex in Python / pandas 【发布时间】:2019-07-06 03:08:18 【问题描述】:

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

我的这一列包含看起来像(三种情况)的原始数据:

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.*-."

提前致谢!

【问题讨论】:

str.extract(r'-CC\s*(.*?)\s+-')?见regex101.com/r/2LagAy/1 @WiktorStribiżew 您不需要在开头输入空格,该正则表达式的更好方法是“-CC.*?\s-” @PabloAlvarez 请参阅my answer,我在这里解释了它的原因 如果您的数据具有这种结构,您可以使用拆分方法并选择第二个索引。 【参考方案1】:

你我的用处

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

见the regex demo。

模式详情

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

(.*?) 两端都有 \s+ 模式这一事实将确保无论有多少空格,结果都已从空格中删除。

【讨论】:

完美运行!非常感谢,特别感谢您解释模式细节!你刚刚拯救了我的一天!谢谢:)! 已经完成 :) !不然又出问题了哈哈!我有一些看起来像这样的行:20180223-FB-BOOST-XXX-CC Vitrolles - 110 - St Valentin 我只想检索“Vitrolles”我得到这个输出而不是使用你建议的正则表达式:Vitrolles - 110 所以我修复了它使用以下正则表达式: (r'-CC\s+(.*?)\s+-[^1-9]') (显然,它没有变成绿色,因为他们说我需要更多的声誉才能投票: ( ) @helloworld 查看最新更新,不需要[^1-9]。请考虑单击左侧的灰色刻度线以接受解决方案。不要关注左边的1,不代表采纳答案。 同样的问题!它重新分配了数字,这不是预期的结果! [^1-9] 仍然可以胜任! Wdu 认为? @helloworld 好的,这已经是只有你知道如何执行的微调了。所以,- 后面应该没有数字吧?因此,r'-CC\s+(.*?)\s+-' 似乎已经完成了您需要的操作,但您也可以使用 r'-CC\s+(.*?)\s+-(?!\s*\d)' 来避免匹配后跟 0+ 个空格和一个数字的 -【参考方案2】:

你可以很简单地做到这一点:

result = df.raw_data.str.extract(r'-CC (.*) -')

【讨论】:

使用 Pandas 抛出错误在 Python 中编写 UDF

...ror【发布时间】:2018-12-2007:26:29【问题描述】:我们正在尝试用Python编写Hive的UDF来清理数据。我们尝试的UDF使用的是Pandas,它正在抛出错误。当我们尝试在没有Pandas的情况下使用另一个python代码时,它工作正常。请帮助理解问... 查看详情

在 Pandas str.contains() 的正则表达式中使用变量

...ains()【发布时间】:2019-05-0610:05:38【问题描述】:我正在尝试使用pandasstr.contains()函数和包含如下所示变量的正则表达式从数据框中选择行。df=pd.DataFrame(["AtestCase","Anoth 查看详情

在 Python 中使用 Excel 文件作为 pandas 数据框的映射

...Python【发布时间】:2021-12-1418:57:23【问题描述】:我正在尝试使用错误代码的excel“主列表”以及它们所属的较大组,它们属于熊猫数据框中较大组的组错误。我不确定如何做到这一点。我以前尝试将错误代码添加到字典中,并... 查看详情

如何使用 Pandas 在 Python 中对字典中的数据进行排序

...Pandas【发布时间】:2019-09-2821:42:05【问题描述】:我正在尝试按犯罪者的年龄以升序对我的输出进行排序。目前,它是完全无序的。我尝试使用排序功能,但它不起作用。xl=pd.ExcelFile(\'Murders.xlsx\')df=xl.parse(\'Sheet 查看详情

Pandas 正则表达式返回括号中的值

...使用了错误的模式吗?【问题讨论】:【参考方案1】:尝试添加.apply(\',\'. 查看详情

Python Pandas 和正则表达式使用字典替换 Dataframe 中的项目

...发布时间】:2021-12-2208:24:36【问题描述】:您好,我正在尝试使用PythonPandas中的字典重新映射Dataframe,但我需要使用正则表达式才能正常工作。这里是一个字典示例:di_cities="Ai 查看详情

使用 Pandas 在 Python 中过滤嵌套的 JSON 数据

...ld,如JSON结构所指示的那样。一旦过滤器操作完成,当我尝试将数据帧转换 查看详情

在 Python 中使用 NLTK 和 Pandas 解压的值太多

...Python【发布时间】:2015-01-1716:33:30【问题描述】:我正在尝试不同的方法来使NLTK的朴素贝叶斯使用NLTK和Pandas模块工作,但我收到“太多值无法解包”错误。importpandasaspdfrompandasimportDataFrame,Seriesim 查看详情

如何使用字符串列表在 Python 3 中搜索 pandas 数据框

...ython3【发布时间】:2021-09-0609:23:20【问题描述】:我正在尝试使用Python3中的列表搜索Pandas数据框。为了清楚起见,我在使用python3.8的Windows机器上。我有一个Excel文件,我正在查找备注列中的某些关键字,然后 查看详情

如何在 Python 中使用 Pandas 按列分组

...转换为DateTime对象。我正在处理的内容如下所示:我正在尝试解析每个商店的销售记录,以便我可以自定义每个商店的销售预测。有什么建议吗?非常感谢!【问题讨论】:你试过搜索功能了吗?你想做 查看详情

如何在 python 中使用 pandas 获取所有重复项的列表?

...单。我想获取重复项目的列表,以便手动比较它们。当我尝试使用pandasduplicatedmethod时,它只返回第一个副本。有没有办法获取所有重复项,而不仅 查看详情

如何使用 Pandas 在 Python 中基于同一行中的另一个单元格设置单元格值

...2021-12-2705:55:57【问题描述】:我正在研究Python和Pandas库并尝试一些基础知识,但在文档中迷失了方向。我有一个PandasDataFrameABCD123434176901... 查看详情

在 .bat 文件中使用 Python 导入 pandas 时不起作用

...。在.bat文件中加载python文件通常效果很好。但是,我在尝试导 查看详情

使用 Python 发送 Pandas DataFrame

...显示为表格,而不是附件电子邮件正文中的内容如下:我尝试了下面的示例代码,但我一直收到错误:------------- 查看详情

在 Python 3.9 中使用 Pandas 将 Excel 转换为 JSON

...述】:这是我第一次在这里发帖,所以放轻松!:)我正在尝试使用PythonPandas库将数据从Excel转换为JSON。我在Excel中有如下表所示的数据,详细为“未命名:x”的列是空白的,我使用这些标题是因为它们在 查看详情

在 Pandas 数据框中运行正则表达式循环

...【问题描述】:我目前有一个日期列存在一些问题。我已尝试解决此问题,但无法得出结论。这是数据:#Importdatadf_views=pd.read_excel(\'PageViews.xlsx\')#Checkdatatypesdf_views.dtypesOut 查看详情

Pandas 正则表达式拆分字符和组

...述】:直到现在我还没有开始学习正则表达式,但我正在尝试通过Series.str.match(expression)弄清楚如何在熊猫中使用它,以便将一列拆分为两个新列。(我知道我可以在没有正则表达式的情况下做到这一点)列数据示例如下:TrueGrit... 查看详情

如何使用 Plotly 在 Python 中使用 Pandas 数据框列设置散点图悬停信息

...】:我正在使用pandas为我的散点图生成数据。但是,当我尝试将一列转换为hoverinfo的列表时,我无法成功编译。我正在使用列表功能。我也尝 查看详情