首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据Python中的日期解析字符串

根据Python中的日期解析字符串
EN

Stack Overflow用户
提问于 2015-06-23 20:08:54
回答 3查看 88关注 0票数 2

我有一根绳子:

05-01-2015 12:27 - KH - (KH) Igangv rende- Opringning - 13-11 00:00 Fangede p hans mobil。环igen kl.15 19-11-2014 11:17 - KH - (KH) Igangv rende- Opringning - 13-11 00:00 Gik p svarer igen og lagt涂涂了RLI。12-11-2014 09:38 - KH - ( KH ) Igangv rende- Opringning - 13-11 00:00 12-11-2014 09:32 -KH- (KH) Igangv rende- Opringning - 15-10 00:00 Fors gt RLI igen og igen igen og ringe om han vil ringe。14-10-2014 13:10 -14- ( KH ) Igangv rende- Opringning - 15-10 00:00 14-10-2014 13:10- KH - ( KH ) Igangv rende- Opringning - 14-10 00:00在14-10-2014 13:06 KH- (KH) Igangv rende- Opringning 14-10 00:00测试

我需要将这个字符串解析为各个片段,以便每个片段都以日期开始。为此,我试图从regex中获益,比如:

代码语言:javascript
复制
match = re.search(r'\d{2}-\d{2}-\d{4}', text)

但这段代码只找到日期。我不能再往前走了。我需要一些作品,如:

first_piece: 05-01-2015 12:27 - KH - (KH) Igangv rende- Opringning - 13-11 00:00 Fangede p hans mobil。环igen kl.15 second_piece: 19-11-2014 11:17 - KH - (KH) Igangv rende- Opringning - 13-11 00:00 Gik p svarer igen og lagt在环形倾斜处涂布直到RLI。

诸若此类。

你能给我一些关于实现这些子字符串的见解吗?

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-23 20:13:14

这行得通吗?

代码语言:javascript
复制
re.split(r' (?=\d{2}-\d{2}-\d{4})', text)
票数 5
EN

Stack Overflow用户

发布于 2015-06-23 20:20:55

马库斯有正确的答案,但在他们的答案中漏掉了一个有趣的细节。

测试文件multiple_dates.py

代码语言:javascript
复制
import re

test_string = u"05-01-2015 12:27 - KH - (KH) Igangværende - Opringning - 13-11 00:00 Fangede RLI på hans mobil. Ring igen kl. 15 19-11-2014 11:17 - KH - (KH) Igangværende - Opringning - 13-11 00:00 Gik på svarer igen og lagt besked til RLI at ringe tilbage. 12-11-2014 09:38 - KH - (KH) Igangværende - Opringning - 13-11 00:00 12-11-2014 09:32 - KH - (KH) Igangværende - Opringning - 15-10 00:00 Forsøgt RLI igen og lagt besked om han vil ringe. 14-10-2014 13:14 - KH - (KH) Igangværende - Opringning - 15-10 00:00 14-10-2014 13:10 - KH - (KH) Igangværende - Opringning - 14-10 00:00 Lagt besked til RLI at ringe 14-10-2014 13:06 - KH - (KH) Igangværende - Opringning - 14-10 00:00 test"

groups = re.split(r' (?=\d{2}-\d{2}-\d{4})', test_string)

for group in groups:
    print(group)

如果我在python2.7中运行给定的示例,就会得到

代码语言:javascript
复制
 python multipe_dates.py 
  File "multipe_dates.py", line 3
SyntaxError: Non-ASCII character '\xc3' in file multipe_dates.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

如果我用python3运行这个程序,它默认工作。

代码语言:javascript
复制
python3 multipe_dates.py 
05-01-2015 12:27 - KH - (KH) Igangværende - Opringning - 13-11 00:00 Fangede RLI på hans mobil. Ring igen kl. 15
19-11-2014 11:17 - KH - (KH) Igangværende - Opringning - 13-11 00:00 Gik på svarer igen og lagt besked til RLI at ringe tilbage.
12-11-2014 09:38 - KH - (KH) Igangværende - Opringning - 13-11 00:00
12-11-2014 09:32 - KH - (KH) Igangværende - Opringning - 15-10 00:00 Forsøgt RLI igen og lagt besked om han vil ringe.
14-10-2014 13:14 - KH - (KH) Igangværende - Opringning - 15-10 00:00
14-10-2014 13:10 - KH - (KH) Igangværende - Opringning - 14-10 00:00 Lagt besked til RLI at ringe
14-10-2014 13:06 - KH - (KH) Igangværende - Opringning - 14-10 00:00 test

如果你加上

代码语言:javascript
复制
# -*- coding: utf-8 -*- 

到py文件的顶部,它将在python2中工作

票数 2
EN

Stack Overflow用户

发布于 2015-06-23 20:14:29

你可以用这个模式

代码语言:javascript
复制
(\d\d-\d\d-\d{4}.*?)(?=\d\d-\d\d-\d{4}|$)

演示

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

https://stackoverflow.com/questions/31012533

复制
相关文章

相似问题

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