麻烦使用datetime.strptime()

时间:2017-03-02 14:40:35

标签: python regex excel datetime strptime

我有一个Excel电子表格。我试图从包含日期的Excel工作表中捕获一行,然后用datetime.strptime()解析日期。

以下是我正在使用的Excel工作表:

enter image description here

和我的相关代码:

pattern = re.compile(r'Listing(.+)', re.IGNORECASE)

a = pattern.findall(str(df))
print("a:", a)

new_a = str(a)
datetime_object = datetime.strptime(new_a, '%b %w %Y')
print("date:", datetime_object)

所以我捕获LISTING后面的所有内容并生成:

a: [' JUN 11 2013 Unnamed: 1 \\']

然后我尝试提取Jun112013,但我失败了:

ValueError: time data "[' JUN 11 2013 Unnamed: 1 \\\\']" does not match format '%b %w %Y'

我很确定这是一个简单的修复,但作为一个初学者,我无法确定如何修复它。我应该改变我的RegEx以减少捕获吗?或者我应该修正date.strptime()正在接受的论点吗?

在查看文档时,参数似乎是正确的:https://docs.python.org/3.5/library/datetime.html

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要修改正在使用的正则表达式以从Excel文件中获取日期。

pattern = re.compile(r'Listing ([A-Z]+ \d{1,2} \d{4})', re.IGNORECASE)

[A-Z]+表示“一个或多个大写字母”,\d{1,2}表示“一个或两个数字”,\d{4}表示“四个数字”。

此外,您使用的日期格式不正确 - %w表示工作日(0到6之间的数字表示从星期日到星期六的工作日),而您应使用%d匹配日期月

所以它最终应该是这样的: datetime_object = datetime.strptime(new_a, '%b %d %Y')