#!/usr/bin/env python import random import re import string class Token(): def __init__(self, s): # cleaned_words = re.sub(r"%s" % string.punctuation, "", s) cleaned_words = re.sub(r"[\.,\?!'\":;^`\|%#\&\*<=>\(\)\[\]\{\}\+\/_-]*", "", s) self.words = [word for word in cleaned_words.split() if word not in ["the", "a", "an"]] def empty(self): if len(self.words) == 0: return True def contains(self, word): if len(self.words) > 0: result = [True for w in self.words if w.lower() == word.lower()] if len(result) > 0: return result[0] def squish(text): "Remove series of spaces from the text." return re.sub('[ \n\t]+', ' ', text).strip() def routput(text): """ Return string with internal word choices replaced randomly. For instance, the string: 'This feels [|very|quite] [nice|cozy|comfortable].' Could return any of the following strings: 'This feels quite nice.' 'This feels cozy.' 'This feels very comfortable.' """ acc = [] for s in text.split("["): choices, *rest = s.split("]") choice = random.choice(choices.split('|')) acc = acc + [choice] + rest return squish(''.join(acc))