python-3.x - 正则表达式:提取日期的表达式不适用于 Series 对象引发错误
问题描述
我正在尝试从文本数据中提取日期。当我在 regex101 网站上签入时,该表达式有效并且工作正常。但是当应用于数据时,它会引发错误“ ValueError:模式不包含捕获组”。我的示例文本是作为熊猫系列对象输入的 ["Mar-20-2009", "Mar 20, 2009", "March 20, 2009", "Mar. 20, 2009"," Mar 20 2009"]。
df2 = pd.Series(["Mar-20-2009", "Mar 20, 2009", "March 20, 2009", "Mar. 20, 2009"," Mar 20 2009"])
df2.str.extractall(r'(?:\d{2} )?(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[a-z]* (?:\d{2}, )?\d{4}')
实际上,它与任何日期都不匹配,我的预期输出是 ["2009 年 3 月 20 日"、"2009 年 3 月 20 日"、"2009 年 3 月 20 日"]。 错误截图
解决方案
您所有带括号的表达式都是非捕获组 (?:),因此错误消息是正确的。如果要捕获表达式,请不要使用 ?: 将其放在括号中。照原样,模式将匹配,但不会捕获任何组。
推荐阅读
- cuda - ptxas 抱怨(输入)我悲伤的设备功能
- python - 叶图返回“TypeError:int64 类型的对象不是 JSON 可序列化的”
- android - 在 Android Studio 中打开对话框时,如何让我的活动保持运行?
- ruby-on-rails - 为什么 User.count 返回 0,直到 bin/spring 在 Ruby on Rails 中重新启动?
- laravel - 在 laravel 中设置的变量没有值
- webpack - 为什么将 babel preset-env 与 `useBuiltIns: "usage"` 一起使用会导致 Harmony-module 出错?
- php - 我可以使用 WP_List_Table 类在页面上呈现表格吗?
- c++ - C++ 入门 5 版:消息和文件夹类
- android - AppWidgetManager.getInstalledProviders() 不会返回所有已安装的小部件
- conda - 获得 conda 环境的完整解决方案