使用 datetime.strptime() 时遇到问题
Trouble using datetime.strptime()
我有一个Excel点差sheet。我试图从 Excel sheet 中捕获包含日期的一行,然后用 datetime.strptime()
解析日期。
这是我正在使用的 Excel sheet 的一部分:
和我的相关代码:
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
感谢您的帮助。
您需要修改用于从 Excel 文件中获取日期的正则表达式。
pattern = re.compile(r'Listing ([A-Z]+ \d{1,2} \d{4})', re.IGNORECASE)
[A-Z]+
表示 "one or more capital letters",\d{1,2}
表示 "one or two numbers",\d{4}
表示 "four numbers"。
此外,您使用的日期格式不正确 - %w
表示工作日(从 0 到 6 的数字代表从周日到周六的工作日),而您应该使用 %d
匹配日期本月
所以最后应该是这样的:
datetime_object = datetime.strptime(new_a, '%b %d %Y')
我有一个Excel点差sheet。我试图从 Excel sheet 中捕获包含日期的一行,然后用 datetime.strptime()
解析日期。
这是我正在使用的 Excel sheet 的一部分:
和我的相关代码:
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
感谢您的帮助。
您需要修改用于从 Excel 文件中获取日期的正则表达式。
pattern = re.compile(r'Listing ([A-Z]+ \d{1,2} \d{4})', re.IGNORECASE)
[A-Z]+
表示 "one or more capital letters",\d{1,2}
表示 "one or two numbers",\d{4}
表示 "four numbers"。
此外,您使用的日期格式不正确 - %w
表示工作日(从 0 到 6 的数字代表从周日到周六的工作日),而您应该使用 %d
匹配日期本月
所以最后应该是这样的:
datetime_object = datetime.strptime(new_a, '%b %d %Y')