import re
mystring = 'this is my first sentence with (brackets)in it. this is the second?What about this sentence with D.D.T. in it?or this with 4.5?'
def fix_punctuation(text):
def sentence_case(text):
# Split into sentences. Therefore, find all text that ends
# with punctuation followed by white space or end of string.
sentences = re.findall(r'(?:\d+\.\d+|\b[A-Z](?:\.[A-Z])*\b\.?|[^.!?])+[.!?](?:\s|\Z)', text)
# Capitalize the first letter of each sentence
sentences = [x[0].upper() + x[1:] for x in sentences]
# Combine sentences
return ''.join(sentences)
#add space after punctuation
text = re.sub(r'(\d+\.\d+|\b[A-Z](?:\.[A-Z])*\b\.?)|([.,;:!?)])\s*', lambda x: x.group(1) or f'{x.group(2)} ', text)
#capitalize sentences
return sentence_case(text)
print(fix_punctuation(mystring))
aW1wb3J0IHJlCgpteXN0cmluZyA9ICd0aGlzIGlzIG15IGZpcnN0IHNlbnRlbmNlIHdpdGggKGJyYWNrZXRzKWluIGl0LiB0aGlzIGlzIHRoZSBzZWNvbmQ/V2hhdCBhYm91dCB0aGlzIHNlbnRlbmNlIHdpdGggRC5ELlQuIGluIGl0P29yIHRoaXMgd2l0aCA0LjU/JwoKZGVmIGZpeF9wdW5jdHVhdGlvbih0ZXh0KToKICAgIGRlZiBzZW50ZW5jZV9jYXNlKHRleHQpOgogICAgICAgICMgU3BsaXQgaW50byBzZW50ZW5jZXMuIFRoZXJlZm9yZSwgZmluZCBhbGwgdGV4dCB0aGF0IGVuZHMKICAgICAgICAjIHdpdGggcHVuY3R1YXRpb24gZm9sbG93ZWQgYnkgd2hpdGUgc3BhY2Ugb3IgZW5kIG9mIHN0cmluZy4KICAgICAgICBzZW50ZW5jZXMgPSByZS5maW5kYWxsKHInKD86XGQrXC5cZCt8XGJbQS1aXSg/OlwuW0EtWl0pKlxiXC4/fFteLiE/XSkrWy4hP10oPzpcc3xcWiknLCB0ZXh0KQoKICAgICAgICAjIENhcGl0YWxpemUgdGhlIGZpcnN0IGxldHRlciBvZiBlYWNoIHNlbnRlbmNlCiAgICAgICAgc2VudGVuY2VzID0gW3hbMF0udXBwZXIoKSArIHhbMTpdIGZvciB4IGluIHNlbnRlbmNlc10KCiAgICAgICAgIyBDb21iaW5lIHNlbnRlbmNlcwogICAgICAgIHJldHVybiAnJy5qb2luKHNlbnRlbmNlcykKICAgIAogICAgI2FkZCBzcGFjZSBhZnRlciBwdW5jdHVhdGlvbgogICAgdGV4dCA9IHJlLnN1YihyJyhcZCtcLlxkK3xcYltBLVpdKD86XC5bQS1aXSkqXGJcLj8pfChbLiw7OiE/KV0pXHMqJywgbGFtYmRhIHg6IHguZ3JvdXAoMSkgb3IgZid7eC5ncm91cCgyKX0gJywgdGV4dCkKICAgICNjYXBpdGFsaXplIHNlbnRlbmNlcwogICAgcmV0dXJuIHNlbnRlbmNlX2Nhc2UodGV4dCkKICAgIApwcmludChmaXhfcHVuY3R1YXRpb24obXlzdHJpbmcpKQogICAg