如何在字符串中查找日期

2024-10-03 23:23:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个项目,它读取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会被制成表格。你知道吗


Tags: 文件csv项目字符串文本列表pdf格式
2条回答

我认为您应该更好地利用^{}模块的强大功能,正如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中查看它的详细描述。 另外,您可以在regex库中找到更多日期和时间的高级re模式

您可以使用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'

相关问题 更多 >