Python 在字符串开头标识日期
我的字符串开头有日期。我想从字符串中删除日期 日期可能有多种格式,我以前不知道(无论如何,我可以决定手动选择更常见的格式,如dd-mm-yyy、dd-mm、dd/mm等) 我需要提取并存储日期之后的子字符串 示例: 例如,我有以下句子和desidera输出: 2019年1月2日英国首相->英国首相 2019年1月2日英国首相->英国首相 2019年1月2日英国首相->2019年1月2日英国首相 2019年1月2日18:52:02英国首相->英国首相Python 在字符串开头标识日期,python,regex,date,Python,Regex,Date,我的字符串开头有日期。我想从字符串中删除日期 日期可能有多种格式,我以前不知道(无论如何,我可以决定手动选择更常见的格式,如dd-mm-yyy、dd-mm、dd/mm等) 我需要提取并存储日期之后的子字符串 示例: 例如,我有以下句子和desidera输出: 2019年1月2日英国首相->英国首相 2019年1月2日英国首相->英国首相 2019年1月2日英国首相->2019年1月2日英国首相 2019年1月2日18:52:02英国首相->英国首相 我认为正则表达式可能是一个不错的选择,但实际上
我认为正则表达式可能是一个不错的选择,但实际上我无法理解正则表达式的问题。也欢迎其他方法 您可以使用此正则表达式删除您提到的各种日期格式
^(?:\d{2}[/-]){2}\d{4}(?:\s+(?:\d{2}:){2}\d{2}\b)?
如果您想支持更多的格式,比如2019-10-22
where year cost first,您可以使用此增强的正则表达式
^(?:\d{2,4}[/ -]){2}\d{2,4}(?:\s+(?:\d{2}:){2}\d{2}\b)?
Python代码示例
import re
arr = ['02/01/2019 The UK prime minister','02-01-2019 The UK prime minister','The UK prime minister in 02/01/2019','02-01-2019 18:52:02 The UK prime minister','2019-01-02 The UK prime minister','2019/01/02 The UK prime minister','2019 01 02 The UK prime minister','2019-01-02 18:52:02 The UK prime minister','2019/01/02 18:52:02 The UK prime minister','2019 01 02 The UK prime minister']
for s in arr:
print(s, '-->', re.sub(r'^(?:\d{2,4}[/ -]){2}\d{2,4}(?:\s+(?:\d{2}:){2}\d{2}\b)? ?', '', s))
印刷品
02/01/2019 The UK prime minister --> The UK prime minister
02-01-2019 The UK prime minister --> The UK prime minister
The UK prime minister in 02/01/2019 --> The UK prime minister in 02/01/2019
02-01-2019 18:52:02 The UK prime minister --> The UK prime minister
2019-01-02 The UK prime minister --> The UK prime minister
2019/01/02 The UK prime minister --> The UK prime minister
2019 01 02 The UK prime minister --> The UK prime minister
2019-01-02 18:52:02 The UK prime minister --> The UK prime minister
2019/01/02 18:52:02 The UK prime minister --> The UK prime minister
2019 01 02 The UK prime minister --> The UK prime minister
不需要用空字符替换来删除日期。我假设你的输入是一个列表。所以你可以试试这个:
如果格式发生变化,我认为最好的做法是提取每个非字母字符,直到它到达第一个字母字符。像
[^a-zA-z]+(.*)
这样的东西对你有用吗?太好了!如何在Python中使用它来用空字符替换日期?@AndreaM:添加了一些示例代码。如果您还有任何问题,请告诉我。2019年2月5日之类的日期如何?它似乎失败了,因为它期望第一个插槽有两位数字。你知道怎么修吗?@AndreaM:很容易修。如果您想允许甚至1位数字作为月或日,只需将{2}
更改为{1,2}
并将{2,4}
更改为{1,4}
我将其修改如下:^(?:\d{1,4}[/-]){1,2}\d{1,4}(?:\s+(?:\d{1,2}:){1,2}\d}\d{1,2}\d{b}。。。。我还修改了{1,4}中的{2,4}。你认为这是对的吗?
import re
mylist = ["02/01/2019 The UK prime minister",
"02-01-2019 The UK prime minister",
"The UK prime minister in 02/01/2019",
"02-01-2019 18:52:02 The UK prime minister"]
for d in mylist:
regex = re.search("[0-9\/\-\:\s]+(\w.*)",d)
regex = regex.groups()[0]
print (regex)