+def strip_punc(string):
+ return filter(lambda c: unicodedata.category(c)[0] not in "PS", string)
+
+def strip_ends(string):
+ while string and unicodedata.category(string[0])[0] in "ZPS":
+ string = string[1:]
+ while string and unicodedata.category(string[-1])[0] in "ZPS":
+ string = string[:-1]
+ return string
+