how to convert a string containing characters into date time using strptime in Python

Question:

I’m trying to convert a string where there exists a characters between date information into a datetime. I was wondering if this is possible without using replace function. Suppose my string is defined as '20220117A1745' implying Jan. 17th, 2022 at 5:45pm.

If I use strptime, as expected, I receive an error.

from datetime import datetime
datetime.strptime(x,"%Y%m%d%H%M")
ValueError: unconverted data remains: A1745

I was wondering if I can do this without using another method. The reason why I don’t want to use antoher method is that, replace has a bad time ecomplexity and will slow the execution time badly (see for reference). I’ll do this operation for hundreds of thousans of strings in a for loop.

Asked By: whitepanda

||

Answers:

What about

from datetime import datetime

x = '20220117A1745'
date_str = x[:8] + x[9:]
date_obj = datetime.strptime(date_str, '%Y%m%d%H%M')
print(date_obj)

which gives

2022-01-17 17:45:00

If the string always has ‘A’ in the same position then you can do this:

from datetime import datetime
x = '20220117A1745'
print(datetime.strptime(x,"%Y%m%dA%H%M"))

If you don’t know what the letter is then:

print(datetime.strptime(x[:8]+x[9:],"%Y%m%d%H%M"))

Output for both methods:

2022-01-17 17:45:00
Answered By: Pingu
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.