我有一个Excel电子表格。我试图从包含日期的Excel工作表中捕获一行,然后用datetime.strptime()
解析日期。
以下是我正在使用的Excel工作表:
和我的相关代码:
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 \\']
然后我尝试提取Jun
,11
和2013
,但我失败了:
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
感谢您的帮助。
答案 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')