我有一个大字符串,我想从中删除所有日期字符串子字符串。根据约束,日期字符串都遵循以下格式:
月字符串日、年(例如:2018 年 9 月 1 日)
假设我的字符串是:
bad_s = "天气很好。2018 年 9 月 1 日,2017 年 8 月 2 日我笑得很开心"
我要回去
good_s = "天气很好。我笑得很开心"
在 Python 中有没有简单的方法来做到这一点?
这是我尝试过的:
reg_ex = """/[\'January\'\,\ \'February\'\,\ \'March\'\,\ \'April\'\,\ \'May\'\,\ \'June\'\,\ \'July\'\,\ \'August\'\,\ \'September\'\,\ \'October\'\,\ \'November\'\,\ \'December\'](?:\^\(\[1\-9\]\|\[12\]\\d\|3\[0\-q\]\)\$)/"""
replaced = re.sub(reg_ex, bad_s, "")
但是,这并不能取代我想要的。我最终还是得到了 bad_s
。
编辑:如果它让任何人都更容易,这里有一个 12 个月的列表,所以你不必写它们:
months = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']
最佳答案
像这样?
(january|february|march|april|may|june|july|august|september|octorber|november|december) ([1-9]|[1-2]\d|3[01]), \d{4}
只是不要忘记 /i
标志或任何 Python 等价物。
请注意,这不关心一个月有多少天,所以 2017 年 2 月 31 日
将匹配,它也不关心闰年。此正则表达式是匹配器而不是验证器。
如果您希望它更通用并完全忽略日期验证,那么这会起作用:
(january|february|march|april|may|june|july|august|september|octorber|november|december) \d+, \d+
关于python - 如何删除像 July 1, 2019 这样的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57483608/