How to parse EXTREMELY fuzzy dates?
The problem you're describing is categorically known as "Natural Language Parsing", or NLP.
Googling for Python NLP Date Parsing libraries yields several results.  You should do that, and evaluate them for your needs.
I have web scraped data in a column of a pandas dataframe that represents when different pieces of art were created. This data was entered in as strings by various people in many many different formats. Some examples:

1998
circa 1995
c. 2003-5
March 2, 1904
1st quarter of 19th century
19th to 20th century
ca. late 19th and early 20th Century
BCE 500
206 BCE-240 CE
1995-99
designed 1950, produced 1969
designed 1935, produced circa 1946-1968
1990; and 1989
1975/97
618-907 CE
2001; 2006 and 2008
1937-42/48
no date
n.d.
mid 1900s
late 1940's

I've spent a couple days writing a long transformer class that attempts to handle every combination in my current dataset, which is semi-successful, but I figured this must be something people have done in the past.
So does there exist any way in Python to handle date information that is extremely fuzzy in this way?