首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >regex以查找出现在月份名称之前的数字(pandas)

regex以查找出现在月份名称之前的数字(pandas)
EN

Stack Overflow用户
提问于 2018-07-31 18:40:18
回答 1查看 38关注 0票数 1

我尝试在pandas列中提取月份名称之前的数字,如果数字和月份名称在那里的话。列中的字符串如下所示:

代码语言:javascript
复制
133    h missed intake office visit on 28 June 1994 a...
136    11 February 1985 CPT Code: 90801 - Psychiatric...
150                  12 March 1980 SOS-10 Total Score:\n
151                      22 June 1990 Medical History:\n
165    .On 18 August 1975 patient presented to BH ED/...
181                18 August 1995 Primary Care Doctor:\n
182    eby 13 June 1974 it appears amitriptyline had ...
188    12 March 2004 CPT Code: 90801 - Psychiatric Di...
228    s 20 yo M carries dx of BPAD, presents for psy...
229    t Allergies Sulfa (Sulfonamide Antibiotics) - ...
230    B/R Walnut Ridge. Raised with sister and paren...
231    50 yo DWF with a history of alcohol use disord...
232    )HTN, hypercholesterolemia, DM, sleep apnea,, ...

例如,在第133行,我希望从单词June之前取出28,在第136行,从单词example之前取出11。

我正在尝试调整以前使用的正则表达式来获取数字。此正则表达式为:

代码语言:javascript
复制
DF["col2"] = DF["col1"].str.extract(r'\b\d{1,2}\s(January|February|March|April|May|June|July)|August|September|October|November|December')

我猜捕获括号导致提取的对象是月份,而不是数字,但当我尝试将捕获括号放在数字\d{1,2}上时,我收到一个错误。

如何从该列中仅获取数字?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-31 18:46:32

要仅提取月份名称之前的日期数字部分,您可以使用

代码语言:javascript
复制
r'\b(\d{1,2})\s(?:January|February|March|April|May|June|July|August|September|October|November|December)
    ^       ^ 

请参阅regex demo

捕获括号仅包含在\d{1,2}模式部分。月份名称位于不创建单独捕获的非捕获组((?:...))中。

还要注意,月份名称都放在一个分组结构中,在最初的正则表达式中,结束的)被放在July之后,并破坏了正则表达式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51611443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档