如何从类似的字符串中拼出日期?

时间:2016-05-19 04:06:03

标签: python regex

我有一些网络抓取的日期,但似乎国家也在日期字符串中。这是一个示例:

Nov. 4, 2015Bangladesh 
April 8, 2015Saudi Arabia 
Jan. 14, 2016Indonesia 
June 26, 2015Tunisia 
Jan. 11, 2016France 

我知道正则表达式非常适合处理字符串,但我没有足够的经验知道如何开始。

如何在保持日期完好的情况下删除国家/地区?

2 个答案:

答案 0 :(得分:3)

这个正则表达式将为您提供所有这些的日期字符串。这可能也可以通过向我们展示您抓取日期的代码来解决,但这不是这个问题的内容。

^.+?\s\d+,\s\d+

示例:

import re
dates = ["Nov. 4, 2015Bangladesh",
"April 8, 2015Saudi Arabia ",
"Jan. 14, 2016Indonesia ",
"June 26, 2015Tunisia ",
"Jan. 11, 2016France "]


for item in dates:
    print(re.match(r"^.+?\s\d+,\s\d+", item).group(0))

打印:

Nov. 4, 2015
April 8, 2015
Jan. 14, 2016
June 26, 2015
Jan. 11, 2016

解释

^    -assert position at start of string
.+?  -match any char except newline (as few as possible)
\s   -match a space character
\d+  -match any number of digits
,    -match literal comma
\s   -match a space character
\d+  -match any number of digits

答案 1 :(得分:1)

您可以尝试以下操作:

^(.*\d{4})

查看演示here

import re

dates = """Nov. 4, 2015Bangladesh 
April 8, 2015Saudi Arabia 
Jan. 14, 2016Indonesia 
June 26, 2015Tunisia 
Jan. 11, 2016France"""

print re.findall(r'^(.*\d{4})', dates, re.M)
# ['Nov. 4, 2015', 'April 8, 2015', 'Jan. 14, 2016', 'June 26, 2015', 'Jan. 11, 2016']