如何在字符串中查找DATE

时间:2016-04-14 14:05:05

标签: python string date

我正在开发一个以pdf格式读取列表并将列表转换为.csv文件的项目,但是当我读取pdf时,文本传递给字符串,直到我没有问题,但我有每当我找到日期时输入"\n",例如:

喜欢字符串:

'HELDER ALVES DE OLIVEIRA18/06/1986RENAN ALVES DE OLIVEIRA06/08/2005'

我想要的:

'HELDER ALVES DE MEDEIROS;18/06/1986\NRENAN ALVES DE OLIVEIRA;06/08/2005\N'

因此,当我打开文件时,.csv将被列表。

2 个答案:

答案 0 :(得分:3)

您可以使用regular expressions

执行此操作
>>> import re
>>> s = 'HELDER ALVES DE OLIVEIRA18/06/1986RENAN ALVES DE OLIVEIRA06/08/2005'
>>> re.sub('(\d\d\/\d\d/\d\d\d\d)', '\\1\n',s)
'HELDER ALVES DE OLIVEIRA18/06/1986\nRENAN ALVES DE OLIVEIRA06/08/2005\n'

答案 1 :(得分:0)

我认为您应该更好地使用re模块的强大功能,正如Jules Mazur对前一个答案的评论所指出的那样,您需要设置某种过滤无效日期,这是一个例子:

>>> s
'HELDER ALVES DE OLIVEIRA18/06/1986RENAN ALVES DE OLIVEIRA06/08/2005'
>>>
>>> re.findall(r'((?:[1-2][0-9]|0[1-9]|3[0-1])/(?:0[0-9]|1[0-2])/(?:[1-2][0-9][0-9][0-9]))', s)
['18/06/1986', '06/08/2005']
>>>
>>> re.sub(r'(?P<Date>(?:[1-2][0-9]|0[1-9]|3[0-1])/(?:0[0-9]|1[0-2])/(?:[1-2][0-9][0-9][0-9]))', '\g<Date>\n', s)
'HELDER ALVES DE OLIVEIRA18/06/1986\nRENAN ALVES DE OLIVEIRA06/08/2005\n'

您可以在此regex demo中查看详细说明。 此外,您还可以在正则表达式库中找到更多有关日期和时间的re模式