如何解决Pandas中用正则提取含荷兰语月份的日期失败问题
解决日期提取失败的问题
问题分析
你的正则表达式中,针对荷兰语月份格式的日期部分使用了固定的半角空格,但文本中的日期可能包含非标准空格(比如不间断空格、全角空格),或者存在多个空格的情况,导致无法匹配2 oktober 2023这类日期。
修改方案
将正则中的固定空格替换为\s+(匹配一个或多个任意空白字符),确保兼容各种空格场景。调整后的代码如下:
import re import pandas as pd def find_valid_dates(dt): # 用\s+匹配一个或多个空白字符,覆盖各类空格及多空格场景 result = re.findall(r"\d{1,2}-\d{2}-\d{2,4}|\d{1,2}\s+(?:januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)\s+\d{1,4}", dt) return result # 测试验证(模拟含不同空格的文本) test_text = "测试内容:14-06-2020、2 oktober 2023、5 november 2024(多空格)、12\u00A0december\u00A02022(不间断空格)" print(find_valid_dates(test_text)) # 输出:['14-06-2020', '2 oktober 2023', '5 november 2024', '12 december 2022'] # 应用到DataFrame SaaOne_msi_vervangen['valid_dates'] = SaaOne_msi_vervangen['Oplossingstekst'].apply(find_valid_dates)
精准匹配优化(可选)
如果只想匹配空格和常见的不间断空格,可以把\s+替换为[\s\u00A0]+(\u00A0是不间断空格的Unicode编码),避免匹配到制表符、换行符等无关空白:
result = re.findall(r"\d{1,2}-\d{2}-\d{2,4}|\d{1,2}[\s\u00A0]+(?:januari|februari|maart|april|mei|juni|juli|augustus|september|oktober|november|december)[\s\u00A0]+\d{1,4}", dt)
内容的提问来源于stack exchange,提问作者Tessa
相关产品推荐
相关产品推荐

