Checking against string.punctuation gets us most of the way there, but there are still edge cases. I have written a library (ispunct) which attempts to be complete.
string.punctuation