首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据清理python

数据清理python
EN

Stack Overflow用户
提问于 2020-04-15 00:54:56
回答 1查看 58关注 0票数 0

以下是在python中抓取时从网站收集的一些汽车信息。

代码语言:javascript
复制
Maruti Suzuki A-Star [2008-2012]Vxi
Hyundai Xcent [2014-2017]SX 1.2 (O)
Ford Figo [2010-2012]Duratorq Diesel Titanium...
Honda CR-V [2009-2013]2.4 AT
Maruti Suzuki Wagon R 1.0 [2010-2013]LXi CNG
Audi A4
Mercedes-Benz E-Class
BMW X3
BMW 3 Serie

分配给我的任务是提取2010、2008、2014和2009年的日期。这些是在-符号之前的

我试图提取它们的模式是[^\-\/\s]\d{4}

我尝试过的上述模式的输出

EN

回答 1

Stack Overflow用户

发布于 2020-04-15 01:02:51

被取反的字符类[^\-\/\s]匹配的不仅仅是开头的[

要获得更具体的匹配,您可以使用当年的捕获组(\d{4})

代码语言:javascript
复制
\[(\d{4})-\d{4}\]

Regex demo | Python demo

要仅匹配以20开头的日期:

代码语言:javascript
复制
\[(20\d{2})-\d{4}\]

Regex demo

例如

代码语言:javascript
复制
import re

regex = r"\[(20\d{2})-\d{4}\]"

test_str = ("Maruti Suzuki A-Star [2008-2012]Vxi\n\n"
    "Hyundai Xcent [2014-2017]SX 1.2 (O)\n\n"
    "Ford Figo [2010-2012]Duratorq Diesel Titanium...\n\n"
    "Honda CR-V [2009-2013]2.4 AT\n\n"
    "Maruti Suzuki Wagon R 1.0 [2010-2013]LXi CNG\n\n"
    "Audi A4\n\n"
    "Mercedes-Benz E-Class\n\n"
    "BMW X3\n\n"
    "BMW 3 Serie\n\n\n"
    "Honda CR-V [1909-2013]2.4 AT")


print(re.findall(regex, test_str))

输出

代码语言:javascript
复制
['2008', '2014', '2010', '2009', '2010']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61213055

复制
相关文章

相似问题

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